var brand = true; var MasterProductName = "Variant name"; var privacydata = ["This is the text for your Privacy terms!","Este es el texto para sus términos de privacidad!"];var termsdata = ["-","Este es el texto para sus Términos de uso!"];var langapp = 0; var langs = ["0"]; var admin = {"image": "logo/logo-8.png", "payments":[],"currency": "nzd", "stripe": "pk_test_ZoQ3eovQCADGs58mvU0wNR67","taxes":true, "paypal": "","name": "Sheds4u Ltd", "domain": "buildit.sheds4u.co.nz"};function MasterUpload(accept) { var file = document.createElement("input"); file.setAttribute("type", "file"); file.setAttribute("accept", accept); file.click(); file.addEventListener("change", function (event) { var input = event.target; var reader = new FileReader(); reader.onload = function () {return file.files[0]; }; reader.readAsDataURL(input.files[0]); }); };var app = angular.module("app", ["ngMaterial", "ngMessages", "ngSanitize", "ngAnimate"]); app.config(function($mdThemingProvider, $sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist(["self","https://cdnstatic.edsahergom.com/**","https://cdnbuilder.edsahergom.com/**","https://firebasestorage.googleapis.com/**"]); $mdThemingProvider.theme("default").primaryPalette("grey").accentPalette("red");}); var summary = {"id":46,"reference":"","type_model":"shapediver_v2","type":"get_quote","visibility":"public","name":["Use our 3d Design Tool to obtain a quote for your desired shed design.","Producto Nuevo - Copia"],"description":["Design your own timber pole building now!\n

\nFarm Shed, Workshop, Lifestyle Shed, Ranch Cabin or American Barn\n

\nAdditionally, you will receive the 3D model you create to your email so that you can share it with your peers or through social media and of course we will get a copy to contact you back with a detailed 3D quote.\n

","Descripción del producto"],"IndexId":248,"sketchfab":[{"name":["Variant name","Nombre variante"],"id":"f8549a3753f22e4b6f3d73485b35509b93707cde403053ee154bbe7bdd2feafd291b194bf1222a91044f0aa394b3cc122bba97f67b5d05943bd08add8362c084f0d239f86f37c0af541a897f0a5fa300702b2e6987c655d5a1016bcde7da19d91efdd151009616-26033cf8f297416b15635023edcc1f9c"}],"shipping":0,"tax_percent":0,"base_price":0,"delivery_days":0,"files":[{"name":["",""],"path":"","load":false,"type":""}],"indexlogo":1,"image":"46-thumbnail-1.jpg","creator":"admin","user":"admin","actionfunction":"ExportNewlineFiles = [];\nExportShapeDiver = true;\n\n//hide pre-existing summary results\nfor (var i = 248; i < 1000; i++) {\nif(MasterValue(\"A\" + i) == undefined) break;\n if (MasterValue(\"A\" + i, \"showthis\") == \"summary\") {\n MasterModify(\"A\" + i, \"showthis\", false);\n }\n}\n\nfor (i = 0; i < drsWdsJSON.DrsWds.length; i++) {\n MasterModify(\"A248\", \"showthis\", \"summary\");\n MasterModify(\"A248\", \"name\", optionsNames[optionsValues.indexOf(drsWdsJSON.DrsWds[i].style)]);\n MasterModify(\"A248\", \"value\", drsWdsJSON.DrsWds[i].width + \"m W x \" + drsWdsJSON.DrsWds[i].height + \"m H\");\n MasterModify(\"A248\", \"duplicate\");\n\n if (i + 1 == drsWdsJSON.DrsWds.length)\n MasterModify(\"A248\", \"showthis\", false);\n}\n\n//Process 2D Drawings\nsdApi.parameters.updateAsync(updateBeforeDownload.concat({name: \"Compute Drawings\", value: true })).then(function () {\nupdateBeforeDownload = [];\n ExportNewlineFiles = drawingNames;\n setTimeout(function () {\n sdApi.parameters.updateAsync({ name: \"Compute Drawings\", value: false });\n }, 30000);\n});","load":false,"first_login":"2"};function SearchP(){var a=window.location.search.substr(1);return null!=a&&""!=a?TransP(a):{}}function TransP(a){for(var t={},r=a.split("&"),e=0;e 0 && frontWings.length == 0){\n MasterModify(\"A5\",\"showthis\", true);\n }else{\n MasterModify(\"A5\",\"showthis\", false);\n };\n});","id":"A3","menu":false,"load":false},{"name":["Front Overhang (m)","Deslizador"],"value":0.6,"logo":"44-A4-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":3,"prices":0,"function":"sdApi.parameters.updateAsync({name:\"Front Overhang\", value:MasterValue(\"A4\")}).then(function() {\n MasterFunction(\"A3\");\n});","id":"A4","menu":false,"load":false},{"name":["Back Overhang (m)","Deslizador - Copia"],"value":0,"logo":"44-A4-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":3,"prices":0,"function":"sdApi.parameters.updateAsync({name:\"Back Overhang\", value:MasterValue(\"A6\")});","id":"A6","menu":true,"load":false},{"name":["Type of Overhang","Imagen Pequeña"],"value":"0","showthis":true,"type":"image1","help":["",""],"logo":"44-A5-1.svg","indexlogo":1,"data":[{"indexlogo":2,"name":["Rafter Overhang","Imagen"],"value":"0","path":"44-A5-0-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":2,"name":["Eyebrow Canopy","Imagen"],"value":"1","path":"44-A5-1-2.png","load":false,"price":0,"productcode":"-"}],"prices":0,"function":"sdApi.parameters.updateAsync({name:\"Type of Overhang\", value:MasterValue(\"A5\")});","id":"A5","menu":false,"load":false}],"function":["",""],"id":"A2","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false},{"name":["General Dimensions","Sección"],"logo":"44-A8-1.svg","indexlogo":1,"type":"section","showthis":true,"open":false,"data":[{"name":["Shed Depth (m)","Deslizador"],"value":6,"logo":"44-A9-2.svg","indexlogo":2,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":3,"max":35,"prices":0,"function":"sdApi.parameters.updateAsync({name:\"Shed Depth\", value:MasterValue(\"A9\")}).then(function() {\nMasterFunction(\"A8_IN\");\n});","id":"A9","menu":false,"load":false},{"name":["Number of Bays","Deslizador - Copia - Copia"],"value":5,"logo":"44-A11-3.svg","indexlogo":3,"showthis":true,"code":"-","step":1,"type":"slider","help":["",""],"min":1,"max":20,"prices":0,"function":"//extend wings\nif (MasterValue(\"A206\") == 1){\n frontWings = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n} else if (MasterValue(\"A206\") == 2) {\n backWings = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n} else if (MasterValue(\"A206\") == 3) {\n frontWings = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n backWings = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n}\n\n//add centre poles\nif (MasterValue(\"A204\") == 1) {\n centrePoles = Array.from({length: MasterValue(\"A11\") + 1}, (v, k) => k+1);\n} \n\n//add skylights\nif (MasterValue(\"A212\") == 1) {\n skylights = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n}\nvar baySizes = JSON.parse(sdApi.parameters.get({name:\"baySizes\"}).data[0].value);\nif (baySizes.length > MasterValue(\"A11\"))\n baySizes.length = MasterValue(\"A11\");\nelse\n baySizes = baySizes.concat(Array(MasterValue(\"A11\") - baySizes.length).fill(baySizes[baySizes.length - 1]));\n\nsdApi.scene.pause();\nsdApi.parameters.updateAsync(\n [\n {name:\"baySizes\", value:JSON.stringify(baySizes)},\n {name:\"frontWings\", value:JSON.stringify(frontWings)},\n {name:\"backWings\", value:JSON.stringify(backWings)},\n {name:\"centrePoles\", value:JSON.stringify(centrePoles)},\n {name:\"skylights\", value:JSON.stringify(skylights)}\n ]\n).then(function() {\n\n\n currentBayCount = MasterValue(\"A11\");\n //move last wall to the end bay\n if (MasterValue(\"A214\") == 1) {\n MasterFunction(\"A214\");\n }else{\nsdApi.scene.resume();\n}\nMasterView(\"backward\");\nMasterFunction(\"A241\");\n});\n\nMasterFunction(\"A9\");","id":"A11","menu":false,"load":false},{"name":["Bay Size Type","Lista"],"logo":false,"indexlogo":0,"showthis":true,"value":"0","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["Unique Size","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["Custom Sizes","Nombre"],"value":"1","price":0,"productcode":"-"}],"prices":0,"function":"var bayAnchors = [];\n\nif (MasterValue(\"A241\") == 0) {\n MasterModify(\"A10\", \"showthis\", true);\n\n sdApi.parameters.updateAsync(\n { name: \"baySizes\", value: JSON.stringify(Array(MasterValue(\"A11\")).fill(MasterValue(\"A10\"))) }\n ).then(function () {\n MasterView(\"backward\");\n var baySizeAnchors = sdApi.scene.getData({ name: \"baySizeAnchors\" }).data[0].data;\n\n for (var i = 0; i < baySizeAnchors.length; ++i) {\n\n var anchor = {\n version: \"1.0\",\n location: baySizeAnchors[i].loc,\n color: [255, 255, 255, 255],\n text: baySizeAnchors[i].size.toFixed(1)\n };\n\n bayAnchors.push(anchor);\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"bayAnchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.TAG2D,\n data: bayAnchors\n }\n ]\n\n });\n\n setTimeout(function () {\n sdApi.scene.render();\n }, 100);\n });\n\n} else {\n MasterModify(\"A10\", \"showthis\", false);\n\n if (explainCustomBaySize) {\n AlertMessage(\"Input Bay Sizes in 3D model\", \"Custom bay sizes can be eddited in the 3D view of the model by changing the respective dimension.\");\n explainCustomBaySize = false;\n }\n\n var baySizeAnchors = sdApi.scene.getData({ name: \"baySizeAnchors\" }).data[0].data;\n\n for (var i = 0; i < baySizeAnchors.length; ++i) {\n\n var anchor = {\n version: \"1.0\",\n location: baySizeAnchors[i].loc,\n format: \"image\",\n data: {\n src: \"\",\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: String(baySizeAnchors[i].bayNum),\n hidden: false\n }\n };\n\n bayAnchors.push(anchor);\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"bayAnchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: bayAnchors\n }\n ]\n\n }).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByClassName('shapediver-domElements')[0].getElementsByTagName('IMG');\n\n if (allImages.length == baySizeAnchors.length) {\n clearInterval(waitImages);\n\n for (var i = 0; i < allImages.length; ++i) {\n var newInput = document.createElement(\"INPUT\");\n newInput.setAttribute(\"type\", \"number\");\n newInput.setAttribute(\"id\", allImages[i].alt);\n newInput.setAttribute(\"value\", baySizeAnchors[allImages[i].alt].size);\n newInput.style.pointerEvents = \"auto\";\n newInput.style.width = \"40px\";\n newInput.style.textAlign = \"center\";\n\n //insert input element\n allImages[i].after(newInput);\n allImages[i].remove();\n i--;\n\n //when finished typing\n newInput.addEventListener(\"keyup\", function (elem) {\n clearTimeout(typingTimer);\n typingTimer = setTimeout(function () {\n var baySizes = JSON.parse(sdApi.parameters.get({ name: \"baySizes\" }).data[0].value);\n\n if (elem.target.value < MasterValue(\"A10\", \"min\")) elem.target.value = MasterValue(\"A10\", \"min\");\n else if (elem.target.value > MasterValue(\"A10\", \"max\")) elem.target.value = MasterValue(\"A10\", \"max\");\n baySizes[elem.target.id] = elem.target.value;\n\n sdApi.parameters.updateAsync({ name: \"baySizes\", value: JSON.stringify(baySizes) }).then(function () {\n MasterView(\"backward\");\n MasterFunction(\"A241\");\n });\n }, 1000);\n });\n\n newInput.addEventListener(\"keydown\", function () {\n clearTimeout(typingTimer);\n });\n }\n\n setTimeout(function () {\n sdApi.scene.render();\n }, 100);\n }\n\n }, 0);\n\n });\n\n}","id":"A241","menu":true},{"name":["Bay Size (m)","Deslizador - Copia"],"value":3.6,"logo":"44-A10-2.svg","indexlogo":2,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":3,"max":15,"prices":0,"function":"sdApi.parameters.updateAsync(\n{name:\"baySizes\", value:JSON.stringify(Array(MasterValue(\"A11\")).fill(MasterValue(\"A10\")))}\n).then(function() {\nMasterFunction(\"A241\");\n});\n\nMasterFunction(\"A9\");","id":"A10","menu":true,"load":false},{"name":["Total Length (m)","Resultado"],"value":null,"help":["",""],"showthis":true,"logo":"44-A12-2.svg","indexlogo":2,"type":"result","prices":0,"function":"var baySizeAnchors = sdApi.scene.getData({ name: \"baySizeAnchors\" }).data[0].data;\nvar totalLength = 0;\nfor (var i = 0; i < baySizeAnchors.length; ++i) {\ntotalLength += baySizeAnchors[i].size;\n}\nreturn (totalLength.toFixed(2));","id":"A12","menu":true,"load":false,"code":"-"},{"name":["Eave Height (m)","Deslizador - Copia - Copia - Copia"],"value":3,"logo":"44-A13-4.svg","indexlogo":4,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":2.4,"max":9,"prices":0,"function":"//setting perspective camera\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function() {\n\nMasterView(\"left\");\n\nsdApi.parameters.updateAsync({name:\"Eave Height\", value:MasterValue(\"A13\")}).then(function() {\n checkWings();\n});\n\n});","id":"A13","menu":true,"load":false},{"name":["Ridge Height (m)","Resultado - Copia"],"value":null,"help":["",""],"showthis":true,"logo":"44-A32-2.svg","indexlogo":2,"type":"result","prices":0,"function":"var ridgeHeight;\nif (MasterValue(\"A3\") == 0){\n ridgeHeight = (((Math.tan(MasterValue(\"A14\")*(Math.PI/180)))*MasterValue(\"A9\"))+MasterValue(\"A13\")).toFixed(1);\n}\nelse{\n ridgeHeight = ((((Math.tan(MasterValue(\"A14\")*(Math.PI/180)))*MasterValue(\"A9\"))/2)+MasterValue(\"A13\")).toFixed(1);\t\n}\nreturn (ridgeHeight);","id":"A32","menu":false,"load":false,"code":"-"},{"name":["Roof Pitch (Degrees)","Deslizador - Copia - Copia - Copia - Copia"],"value":5,"logo":"44-A14-4.svg","indexlogo":4,"showthis":true,"code":"-","step":1,"type":"slider","help":["",""],"min":3,"max":45,"prices":0,"function":"//setting perspective camera\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function() {\n\nMasterView(\"left\");\n\nsdApi.parameters.updateAsync({name:\"Roof Pitch\", value:MasterValue(\"A14\")}).then(function() {\ncheckWings();\n});\n\n});","id":"A14","menu":false,"load":false}],"function":["//show general dimensions\nsdApi.scene.toggleGeometry([dimensionsScenePath], []);\n\n//setting camera to top view\nMasterView(\"backward\");\n\n//waiting camera to be in top view\nsetTimeout(function () {\n\n //update lights\n sdApi.scene.lights.updateLight({\n id: \"ambient0\",\n type: \"ambient\",\n properties: {\n color: 16777215,\n intensity: 1.2\n }\n });\n\n sdApi.scene.lights.updateLight({\n id: \"directional0\",\n type: \"directional\",\n properties: {\n castShadow: true,\n color: 16777215,\n direction: { x: 0.5774, y: -0.5774, z: 0.5774 },\n intensity: 0\n }\n });\n\n sdApi.scene.lights.updateLight({\n id: \"directional1\",\n type: \"directional\",\n properties: {\n castShadow: false,\n color: 16777215,\n direction: { x: -0.25, y: -1, z: 1 },\n intensity: 0\n }\n });\n\n //setting top view scene settings\n sdApi.updateSettingsAsync(\n {\n scene: {\n gridVisibility: true,\n material: {\n environmentMapAsBackground: false\n },\n camera: {\n controls: {\n orbit: {\n enableRotation: false,\n enableZoom: false\n }\n },\n cameraTypes: {\n active: 1\n }\n },\n render: {\n ambientOcclusion: false,\n shadows: false\n }\n }\n }\n ).then(function () {\n//adding bay size inputs\nif (showBayInputs){\nMasterFunction(\"A241\");\nshowBayInputs = true;\n}\n\n //calling top view immediately/duration = 0 and having into account field of view for orthographic views\n orthographic = true;\n hideRoof = true;\n viewerSpeed = 0;\n MasterView(\"backward\");\n viewerSpeed = 1500;\n });\n\n}, viewerSpeed + 100);","//setting normal camera settings\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n controls: {\n orbit: {\n enableRotation: true,\n enableZoom: true\n }\n },\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function () {\n if (MasterValue(\"A241\") == 1) {\n var bayAnchors = [];\n //converting inputs into just text\n var baySizeAnchors = sdApi.scene.getData({ name: \"baySizeAnchors\" }).data[0].data;\n\n for (var i = 0; i < baySizeAnchors.length; ++i) {\n\n var anchor = {\n version: \"1.0\",\n location: baySizeAnchors[i].loc,\n color: [255, 255, 255, 255],\n text: baySizeAnchors[i].size.toFixed(1)\n };\n\n bayAnchors.push(anchor);\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"bayAnchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.TAG2D,\n data: bayAnchors\n }\n ]\n\n });\n }\n\n orthographic = false;\n hideRoof = false;\n\n //calling perspective view\n MasterView(\"backward_right_down\");\n});\n\nMasterFunction(\"A236,A237,A238\");"],"id":"A8","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false,"fixed":false},{"name":["Wall Layout","Sección"],"logo":"44-A15-2.svg","indexlogo":2,"type":"section","showthis":true,"open":false,"data":[{"name":["Division Walls","Lista"],"logo":false,"indexlogo":0,"showthis":true,"value":"1","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["None","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["End Walls","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Custom","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Axes","Nombre"],"value":"3","price":0,"productcode":"-"}],"prices":0,"function":"//hide apply button and move slider\nMasterModify(\"A220\", \"showthis\", false);\n\n//show move button\nMasterModify(\"A221\", \"showthis\", true);\n\n//change name of move slider\nMasterModify(\"A220\", \"name\", \"Select Wall to Move\");\n\ncurrentWall = \"\";\n\nvar endDivisionWallsJSON;\nvar checkDivWalls;\n\nvar initPrep = function () {\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n //hide custom selected poles\n MasterModify(\"A214\", \"hideoption\", true, 3);\n\n //show custom option\n MasterModify(\"A214\", \"hideoption\", false, 2);\n\n //hide apply button\n MasterModify(\"A215\", \"showthis\", false);\n\n endDivisionWallsJSON = sdApi.scene.getData({ name: \"endDivisionWallsJSON\" }).data[0].data;\n checkDivWalls = endDivisionWallsJSON.divisionWalls;\n\n divisionWalls = [];\n\n};\n\nif (MasterValue(\"A214\") == 0) {\n\n initPrep();\n\n for (var i = 0; i < checkDivWalls.length; ++i) {\n\n for (var j = 0; j < checkDivWalls[i].show.length; ++j) {\n if (checkDivWalls[i].show[j]) {\n endDivisionWallsJSON.divisionWalls[i].show[j] = false;\n }\n }\n\n }\n\n divisionWallsJSON = {divisionWalls: []};\n sdApi.parameters.updateAsync({ name: \"divisionWallsJSON\", value: JSON.stringify(divisionWallsJSON)}).then(function () {\n\n //update sideWallsJSON\n frontWalls = [];\n backWalls = [];\n sideWallsJSON = sdApi.scene.getData({ name: \"sideWallsJSON\" }).data[0].data;\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n if (sideWallsJSON.frontWalls.show[i]) {\n frontWalls.push(i);\n }\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n if (sideWallsJSON.backWalls.show[i]) {\n backWalls.push(i);\n }\n }\n });\n\n} else if (MasterValue(\"A214\") == 1) {\n\n initPrep();\n\n for (var i = 0; i < checkDivWalls.length; ++i) {\n\n for (var j = 0; j < checkDivWalls[i].show.length; ++j) {\n if (checkDivWalls[i].show[j]) {\n divisionWalls.push(\"axis_\" + checkDivWalls[i].axis + \"_\" + j);\n }\n }\n\n }\n\n divisionWallsJSON = endDivisionWallsJSON;\n sdApi.parameters.updateAsync({ name: \"divisionWallsJSON\", value: JSON.stringify(endDivisionWallsJSON) }).then(function () {\n sdApi.scene.resume();\n\n //update sideWallsJSON\n frontWalls = [];\n backWalls = [];\n sideWallsJSON = sdApi.scene.getData({ name: \"sideWallsJSON\" }).data[0].data;\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n if (sideWallsJSON.frontWalls.show[i]) {\n frontWalls.push(i);\n }\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n if (sideWallsJSON.backWalls.show[i]) {\n backWalls.push(i);\n }\n }\n\n });\n\n} else if (MasterValue(\"A214\") == 2 || MasterValue(\"A214\") == 3) {\n\n AlertMessage(\"Use the Icons\", \"Add and remove division walls by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished.\");\n\n //show apply button\n MasterModify(\"A215\", \"showthis\", true);\n MasterModify(\"A215\", \"name\", \"Apply Changes to Custom Division Walls\");\n MasterModify(\"A215\", \"text\", \"Apply\");\n\n var divisionWallsAnchors = sdApi.scene.getData({ name: \"divisionWallsAnchors\" }).data[0].data;\n\n //Clean anchor Content\n anchorsContent = [];\n\n for (var i = 0; i < divisionWallsAnchors.length; ++i) {\n\n var imageURL = addRemoveIcons[0];\n\n if (divisionWalls.includes(divisionWallsAnchors[i].alt)) {\n imageURL = addRemoveIcons[1];\n }\n\n var anchor = {\n version: \"1.0\",\n location: divisionWallsAnchors[i].loc,\n format: \"image\",\n data: {\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: divisionWallsAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) {\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n var thisAlt = elem.target.getAttribute(\"alt\").split(\"_\");\n var sectCount = sdApi.scene.getData({ name: \"divisionWallsSectCount\" }).data[0].data[thisAlt[1] - 1]\n\n for (var j = 0; j < divisionWallsJSON.divisionWalls.length; ++j) {\n\n if (divisionWallsJSON.divisionWalls[j].axis == thisAlt[1]) {\n\n if (elem.target.getAttribute(\"src\") == addRemoveIcons[0]) {\n\n //change icon to \"remove\" icon\n elem.target.src = addRemoveIcons[1];\n\n //add this wall to the divisionWalls array\n divisionWalls.push(elem.target.getAttribute(\"alt\"));\n\n //change the JSON show section to true\n divisionWallsJSON.divisionWalls[j].show[thisAlt[2]] = true;\n\n } else {\n\n //change icon to \"add\" icon\n elem.target.src = addRemoveIcons[0];\n\n //remove this wall from the divisionWalls array\n var index = divisionWalls.indexOf(elem.target.getAttribute(\"alt\"));\n divisionWalls.splice(index, 1);\n\n //remove this object from JSON if it has a single section\n if (sectCount == 1) {\n divisionWallsJSON.divisionWalls.splice(j, 1);\n\n //otherwise just change the JSON show section to false\n } else {\n divisionWallsJSON.divisionWalls[j].show[thisAlt[2]] = false;\n }\n\n }\n\n break;\n\n } else if (j == divisionWallsJSON.divisionWalls.length - 1) {\n\n var showArray = Array.from({ length: sectCount }, i => false);\n showArray[thisAlt[2]] = true;\n\n divisionWallsJSON.divisionWalls.push({\n axis: thisAlt[1],\n show: showArray\n })\n\n }\n\n }\n\n var wallAxes = [];\n\n for (var j = 0; j < divisionWallsJSON.divisionWalls.length; ++j) {\n wallAxes.push(Number(divisionWallsJSON.divisionWalls[j].axis));\n }\n\n wallAxes.sort();\n\n //show custom selected division walls\n if (wallAxes.length > 0) {\n MasterModify(\"A214\", \"nameoption\", \"Axes \" + wallAxes.join(), 3);\n MasterModify(\"A214\", \"value\", 3);\n MasterModify(\"A214\", \"hideoption\", false, 3);\n MasterModify(\"A214\", \"hideoption\", true, 2);\n } else {\n MasterModify(\"A214\", \"value\", 2);\n MasterModify(\"A214\", \"hideoption\", false, 2);\n MasterModify(\"A214\", \"hideoption\", true, 3);\n }\n\n MasterApply();\n\n }\n\n }\n\nif (i == allImages.length - 1) {\n clearInterval(waitImages);\n refocusDomElem();\n }\n\n }\n\n }, 250);\n\n });\n\n};","id":"A214","menu":false},{"name":["Apply Changes to Custom Division Walls","Botón"],"help":["",""],"logo":false,"showthis":false,"indexlogo":0,"type":"button","text":["Apply","Botón"],"function":"if (MasterValue(\"A215\", \"text\")[0] == \"Apply\") {\nMasterModify(\"A215\", \"text\", \"Loading...\");\n sdApi.parameters.updateAsync({ name: \"divisionWallsJSON\", value: JSON.stringify(divisionWallsJSON)}).then(function () {\n\n //update sideWallsJSON\nfrontWalls = [];\n backWalls = [];\n sideWallsJSON = sdApi.scene.getData({ name: \"sideWallsJSON\" }).data[0].data;\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n if (sideWallsJSON.frontWalls.show[i]) {\n frontWalls.push(i);\n }\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n if (sideWallsJSON.backWalls.show[i]) {\n backWalls.push(i);\n }\n }\n\n if (divisionWalls.length == 0) {\n MasterModify(\"A214\", \"value\", 0);\n MasterModify(\"A214\", \"hideoption\", false, 2);\n MasterModify(\"A214\", \"hideoption\", true, 3);\n MasterModify(\"A215\", \"showthis\", false);\n } else {\n MasterModify(\"A215\", \"name\", \"Edit Custom Division Walls\");\n MasterModify(\"A215\", \"text\", \"Edit\");\n }\n\n MasterApply();\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n });\n\n} else if (MasterValue(\"A215\", \"text\")[0] == \"Edit\") {\nMasterModify(\"A215\", \"text\", \"Loading...\");\nMasterModify(\"A218\", \"text\", \"Edit\");\n sdApi.parameters.updateAsync([{name:\"divisionWallsJSON\", value:JSON.stringify(divisionWallsJSON)},{ name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON)}]).then(function () {\n MasterFunction(\"A214\");\n MasterModify(\"A215\", \"name\", \"Apply Changes to Custom Division Walls\");\n MasterModify(\"A215\", \"text\", \"Apply\");\n});\n\n}","id":"A215","menu":false},{"name":["Front/Back Walls","Lista"],"logo":false,"indexlogo":0,"showthis":true,"value":"3","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["None","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["Front Wall","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Back Wall","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Both Walls","Nombre"],"value":"3","price":0,"productcode":"-"},{"name":["Custom","Nombre"],"value":"4","price":0,"productcode":"-"},{"name":["Bays","Nombre"],"value":"5","price":0,"productcode":"-"}],"prices":0,"function":"//hide apply button and move slider\nMasterModify(\"A220\", \"showthis\", false);\n\n//show move button\nMasterModify(\"A221\", \"showthis\", true);\n\n//change name of move slider\nMasterModify(\"A220\", \"name\", \"Select Wall to Move\");\n\ncurrentWall = \"\";\n\nvar initPrep = function () {\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n //hide custom selected poles\n MasterModify(\"A216\", \"hideoption\", true, 5);\n\n //show custom option\n MasterModify(\"A216\", \"hideoption\", false, 4);\n\n //hide apply button and move slider\n MasterModify(\"A218\", \"showthis\", false);\n\n frontWalls = [];\n backWalls = [];\n\n sideWallsJSON = sdApi.scene.getData({ name: \"sideWallsJSON\" }).data[0].data;\n\n};\n\nif (MasterValue(\"A216\") == 0) {\n\n //hide move button\n MasterModify(\"A221\", \"showthis\", false);\n\n initPrep();\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n sideWallsJSON.frontWalls.show[i] = false;\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n sideWallsJSON.backWalls.show[i] = false;\n }\n\n //update 3D model\n sdApi.parameters.updateAsync([\n { name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) },\n ]);\n\n} else if (MasterValue(\"A216\") == 1) {\n\n initPrep();\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n sideWallsJSON.frontWalls.show[i] = true;\n frontWalls.push(i);\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n sideWallsJSON.backWalls.show[i] = false;\n }\n\n //update 3D model\n sdApi.parameters.updateAsync([\n { name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) },\n ]);\n\n} else if (MasterValue(\"A216\") == 2) {\n\n initPrep();\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n sideWallsJSON.frontWalls.show[i] = false;\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n sideWallsJSON.backWalls.show[i] = true;\n backWalls.push(i);\n }\n\n //update 3D model\n sdApi.parameters.updateAsync([\n { name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) },\n ]);\n\n} else if (MasterValue(\"A216\") == 3) {\n\n initPrep();\n\n for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) {\n sideWallsJSON.frontWalls.show[i] = true;\n frontWalls.push(i);\n }\n\n for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) {\n sideWallsJSON.backWalls.show[i] = true;\n backWalls.push(i);\n }\n\n //update 3D model\n sdApi.parameters.updateAsync([\n { name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) },\n ]);\n\n} else if (MasterValue(\"A216\") == 4 || MasterValue(\"A216\") == 5) {\n\n AlertMessage(\"Use the Icons\", \"Add and remove walls by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished.\");\n\n //show apply button\n MasterModify(\"A218\", \"showthis\", true);\n MasterModify(\"A218\", \"name\", \"Apply Changes to Front/Back Walls\");\n MasterModify(\"A218\", \"text\", \"Apply\");\n\n var sideWallsAnchors = sdApi.scene.getData({ name: \"sideWallsAnchors\" }).data[0].data;\n\n //Clean anchor Content\n anchorsContent = [];\n var counter = 0;\n\n for (var i = 0; i < sideWallsAnchors.length; ++i) {\n\n var thisAlt = sideWallsAnchors[i].alt.split(\"_\");\n\n var imageURL = addRemoveIcons[0];\n\n if ((thisAlt[0] == \"frontWalls\" && frontWalls.includes(Number(thisAlt[1]))) || (thisAlt[0] == \"backWalls\" && backWalls.includes(Number(thisAlt[1])))) {\n imageURL = addRemoveIcons[1]\n }\n\n var anchor = {\n version: \"1.0\",\n location: sideWallsAnchors[i].loc,\n format: \"image\",\n data: {\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: sideWallsAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) {\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n var thisAlt = elem.target.getAttribute(\"alt\").split(\"_\");\n\n if (elem.target.getAttribute(\"src\") == addRemoveIcons[0]) {\n\n elem.target.src = addRemoveIcons[1];\n\n if (thisAlt[0] == \"frontWalls\") {\n frontWalls.push(Number(thisAlt[1]));\n frontWalls.sort();\n sideWallsJSON.frontWalls.show[thisAlt[1]] = true;\n } else {\n backWalls.push(Number(thisAlt[1]));\n backWalls.sort();\n sideWallsJSON.backWalls.show[thisAlt[1]] = true;\n }\n\n } else {\n\n elem.target.src = addRemoveIcons[0];\n\n if (thisAlt[0] == \"frontWalls\") {\n var index = frontWalls.indexOf(Number(thisAlt[1]));\n frontWalls.splice(index, 1);\n sideWallsJSON.frontWalls.show[thisAlt[1]] = false;\n } else {\n var index = backWalls.indexOf(Number(thisAlt[1]));\n backWalls.splice(index, 1);\n sideWallsJSON.backWalls.show[thisAlt[1]] = false;\n }\n\n }\n\n //set text which show selected walls\n var frontText = \"\";\n var backText = \"\";\n var joinText = \"\";\n\n if (frontWalls.length > 0) {\n frontText = \"Front \" + frontWalls.join();\n }\n\n if (backWalls.length > 0) {\n backText = \"Back \" + backWalls.join();\n }\n\n if (frontWalls.length > 0 && backWalls.length > 0) {\n joinText = \" / \";\n }\n\n //show custom selected poles\n if (frontWalls.length > 0 || backWalls.length > 0) {\n MasterModify(\"A216\", \"nameoption\", frontText + joinText + backText, 5);\n MasterModify(\"A216\", \"value\", 5);\n MasterModify(\"A216\", \"hideoption\", false, 5);\n MasterModify(\"A216\", \"hideoption\", true, 4);\n } else {\n MasterModify(\"A216\", \"value\", 4);\n MasterModify(\"A216\", \"hideoption\", false, 4);\n MasterModify(\"A216\", \"hideoption\", true, 5);\n }\n\n MasterApply();\n\n }\n\n }\n\nif (i == allImages.length - 1) {\n clearInterval(waitImages);\n refocusDomElem();\n }\n\n }\n\n }, 250);\n\n });\n\n};","id":"A216","menu":false},{"name":["Apply Changes to Custom Front/Back Walls","Botón"],"help":["",""],"logo":false,"showthis":true,"indexlogo":0,"type":"button","text":["Apply","Botón"],"function":"if (MasterValue(\"A218\", \"text\")[0] == \"Apply\") {\nMasterModify(\"A218\", \"text\", \"Loading...\");\n sdApi.parameters.updateAsync({ name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON)}).then(function () {\n\n if (sideWallsJSON.length == 0) {\n MasterModify(\"A216\", \"value\", 0);\n MasterModify(\"A216\", \"hideoption\", false, 2);\n MasterModify(\"A216\", \"hideoption\", true, 3);\n MasterModify(\"A218\", \"showthis\", false);\n } else {\n MasterModify(\"A218\", \"name\", \"Edit Custom Front/Back Walls\");\n MasterModify(\"A218\", \"text\", \"Edit\");\n }\n\n MasterApply();\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n });\n\n} else if (MasterValue(\"A218\", \"text\")[0] == \"Edit\") {\nMasterModify(\"A218\", \"text\", \"Loading...\");\nMasterModify(\"A215\", \"text\", \"Edit\");\n sdApi.parameters.updateAsync([{name:\"divisionWallsJSON\", value:JSON.stringify(divisionWallsJSON)},{ name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON)}]).then(function () {\n MasterFunction(\"A216\");\n MasterModify(\"A218\", \"name\", \"Apply Changes to Custom Front/Back Walls\");\n MasterModify(\"A218\", \"text\", \"Apply\");\n});\n\n}","id":"A218","menu":false},{"name":["Select Wall to Move","Deslizador"],"value":0,"logo":false,"indexlogo":0,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":3,"prices":0,"function":"var moveWall = currentWall.split(\"_\");\nsideWallsJSON[moveWall[0]].move[moveWall[1]] = MasterValue(\"A220\");\n\nsdApi.parameters.updateAsync({ name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) }).then(function () {\n\n MasterFunction(\"A221\");\n\n //update divisionWallsJSON\n divisionWalls = [];\n divisionWallsJSON = sdApi.scene.getData({ name: \"divisionWallsJSON\" }).data[0].data;\n\n for (var i = 0; i < divisionWallsJSON.divisionWalls.length; ++i) {\n\n for (var j = 0; j < divisionWallsJSON.divisionWalls[i].show.length; ++j) {\n if (divisionWallsJSON.divisionWalls[i].show[j]) {\n divisionWalls.push(\"axis_\" + divisionWallsJSON.divisionWalls[i].axis + \"_\" + j);\n }\n }\n }\n\n});","id":"A220","menu":false},{"name":["Move Front/Back Walls","Botón"],"help":["",""],"logo":false,"showthis":true,"indexlogo":0,"type":"button","text":["Move","Botón"],"function":"if (!MasterValue(\"A220\", \"showthis\")) {\n AlertMessage(\"Use the Icons\", \"Select which wall to move by clicking on the icons displayed in the 3D model.\");\n}\n\nMasterModify(\"A215,A218\", \"text\", \"Edit\");\nsdApi.parameters.updateAsync([{ name: \"divisionWallsJSON\", value: JSON.stringify(divisionWallsJSON) }, { name: \"sideWallsJSON\", value: JSON.stringify(sideWallsJSON) }]).then(function () {\n\n //show move slider button\n MasterModify(\"A220\", \"showthis\", true);\n\n //hide move button\n MasterModify(\"A221\", \"showthis\", false);\n\n var sideWallsAnchors = sdApi.scene.getData({ name: \"sideWallsAnchors\" }).data[0].data;\n\n //Clean anchor Content\n anchorsContent = [];\n var counter = 0;\n\n for (var i = 0; i < sideWallsAnchors.length; ++i) {\n\n var imageURL = moveIcon;\n\n if (sideWallsAnchors[i].alt == currentWall) {\n imageURL = addRemoveIcons[1];\n }\n\n var thisAlt = sideWallsAnchors[i].alt.split(\"_\");\n\n if ((thisAlt[0] == \"frontWalls\" && frontWalls.includes(Number(thisAlt[1]))) || (thisAlt[0] == \"backWalls\" && backWalls.includes(Number(thisAlt[1])))) {\n\n var anchor = {\n version: \"1.0\",\n location: sideWallsAnchors[i].loc,\n format: \"image\",\n data: {\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: sideWallsAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n //clean images icons variable\n allImagesIcons = [];\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == moveIcon || allImages[i].src == addRemoveIcons[1]) {\n\n allImagesIcons.push(allImages[i]);\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n currentWall = elem.target.getAttribute(\"alt\");\n var thisAlt = elem.target.getAttribute(\"alt\").split(\"_\");\n\n //put back move icons in all anchers\n for (var j = 0; j < allImagesIcons.length; ++j) {\n allImagesIcons[j].src = moveIcon;\n }\n\n elem.target.src = addRemoveIcons[1];\n var sliderMax = MasterValue(\"A9\") / 2;\n\n //show name of wall in slider\n if (thisAlt[0] == \"frontWalls\") {\n\n if (sdApi.scene.getData({ name: \"wingWallJSON\" }).data[0].data[thisAlt[0]][thisAlt[1]]) {\n sliderMax = (MasterValue(\"A9\") / 2) + frontWingDepth;\n }\n\n MasterModify(\"A220\", \"name\", \"Move Front Wall \" + thisAlt[1]);\n\n } else {\n\n if (sdApi.scene.getData({ name: \"wingWallJSON\" }).data[0].data[thisAlt[0]][thisAlt[1]]) {\n sliderMax = (MasterValue(\"A9\") / 2) + backWingDepth;\n }\n\n MasterModify(\"A220\", \"name\", \"Move Back Wall \" + thisAlt[1]);\n\n }\n\n //update max and value of move slider with current position of wall\n MasterModify(\"A220\", \"value\", sideWallsJSON[thisAlt[0]].move[thisAlt[1]]);\n MasterModify(\"A220\", \"max\", sliderMax);\n\n MasterApply();\n\n }\n\n }\n\n if (i == allImages.length - 1) {\n clearInterval(waitImages);\n refocusDomElem();\n }\n\n }\n\n }, 0);\n\n });\n\n});","id":"A221","menu":false}],"function":["showBayInputs = false;\nMasterFunction('A8_IN');","//make sure changes were applied\nMasterModify(\"A215,A218\",\"text\",\"Apply\");\nMasterFunction(\"A215,A218\");\n\n//hide apply button and move slider\nMasterModify(\"A220\", \"showthis\", false);\n\n//show move button\nMasterModify(\"A221\", \"showthis\", true);\n\n//change name of move slider\nMasterModify(\"A220\", \"name\", \"Select Wall to Move\");\n\ncurrentWall = \"\";\n\nMasterFunction('A8_OUT');"],"id":"A15","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false},{"name":["Centre Poles and Wings","Sección"],"logo":false,"indexlogo":0,"type":"section","showthis":true,"open":false,"data":[{"name":["Centre Poles","Lista"],"logo":false,"indexlogo":0,"showthis":true,"value":"0","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["None","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["All Axes","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Custom","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Axis","Nombre"],"value":"3","price":0,"productcode":"-"}],"prices":0,"function":"MasterFunction(\"A8_IN\");\n\nif (MasterValue(\"A204\") == 0 || MasterValue(\"A204\") == 1) {\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id:\"anchors\",\n content:[]\n });\n\n //hide custom selected poles\n MasterModify(\"A204\",\"hideoption\",true,3);\n\n //show custom option\n MasterModify(\"A204\",\"hideoption\",false,2);\n\n //hide apply button\n MasterModify(\"A205\",\"showthis\",false);\n \n centrePoles = [];\n\n}\n\nif (MasterValue(\"A204\") == 1) {\n\n centrePoles = Array.from({length: MasterValue(\"A11\") + 1}, (v, k) => k+1);\n\n} else if (MasterValue(\"A204\") == 2 || MasterValue(\"A204\") == 3) {\n\n if (anchorsContent.length == 0){\n AlertMessage(\"Use the Icons\",\"Add and remove centre poles by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished.\");\n }\n\n //show apply button\n MasterModify(\"A205\",\"showthis\",true);\n MasterModify(\"A205\",\"name\",\"Apply Changes to Custom Centre Poles\");\n MasterModify(\"A205\",\"text\",\"Apply\");\n\n var centrePolesAnchors = sdApi.scene.getData({name:\"centrePolesAnchors\"}).data[0].data;\n\n anchorsContent = [];\n\n for (var i = 0; i < centrePolesAnchors.length; ++i) {\n\n var imageURL = addRemoveIcons[0];\n\n if (centrePoles.includes(i+1)){\n imageURL = addRemoveIcons[1]\n }\n\n var anchor = {\n version:\"1.0\",\n location: centrePolesAnchors[i].loc,\n format:\"image\",\n data:{\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height:28,\n width:28,\n alt: centrePolesAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id:\"anchors\",\n content:[\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function() {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]){\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n if (elem.target.getAttribute(\"src\") == addRemoveIcons[0]) {\n\n elem.target.src = addRemoveIcons[1];\n centrePoles.push(Number(elem.target.getAttribute(\"alt\")));\n centrePoles.sort();\n\n } else {\n\n elem.target.src = addRemoveIcons[0];\n var index = centrePoles.indexOf(Number(elem.target.getAttribute(\"alt\")));\n centrePoles.splice(index,1);\n\n }\n\n //show custom selected poles\n if (centrePoles.length > 0){\n MasterModify(\"A204\",\"nameoption\",\"Axes \" + centrePoles.join(),3);\n MasterModify(\"A204\",\"value\",3);\n MasterModify(\"A204\",\"hideoption\",false,3);\n MasterModify(\"A204\",\"hideoption\",true,2);\n } else {\n MasterModify(\"A204\",\"value\",2);\n MasterModify(\"A204\",\"hideoption\",false,2);\n MasterModify(\"A204\",\"hideoption\",true,3);\n }\n \n MasterApply();\n\n }\n\n }\n\n if (i == allImages.length - 1){\n clearInterval(waitImages);\n //refocusDomElem();\n }\n\n }\n\n },0);\n\n });\n\n}\n\n//apply changes to centre poles in 3D model\nif (MasterValue(\"A204\") == 0 || MasterValue(\"A204\") == 1) {\n sdApi.parameters.updateAsync({name:\"centrePoles\", value:JSON.stringify(centrePoles)});\n}","id":"A204","menu":false},{"name":["Apply Changes to Custom Centre Poles","Botón"],"help":["",""],"logo":false,"showthis":false,"indexlogo":0,"type":"button","text":["Apply","Botón"],"function":"if (MasterValue(\"A205\",\"text\")[0] == \"Apply\"){\n\n MasterModify(\"A205\",\"text\",\"Loading...\");\n\n sdApi.parameters.updateAsync({name:\"centrePoles\", value:JSON.stringify(centrePoles)}).then(function() {\n\n if (centrePoles.length == 0){\n MasterModify(\"A204\",\"value\",0);\n MasterModify(\"A204\",\"hideoption\",false,2);\n MasterModify(\"A204\",\"hideoption\",true,3);\n MasterModify(\"A205\",\"showthis\",false);\n }else{\n MasterModify(\"A205\",\"name\",\"Edit Custom Centre Poles\");\n MasterModify(\"A205\",\"text\",\"Edit\");\n }\n\n MasterApply();\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id:\"anchors\",\n content:[]\n });\n\n });\n\n} else if (MasterValue(\"A205\",\"text\")[0] == \"Edit\"){\n\n MasterFunction(\"A204\");\n MasterModify(\"A205\",\"name\",\"Apply Changes to Custom Centre Poles\");\n MasterModify(\"A205\",\"text\",\"Apply\");\n\n}","id":"A205","menu":false},{"name":["Wings","Lista"],"logo":false,"indexlogo":0,"showthis":true,"value":"0","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["None","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["Front Wing","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Back Wing","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Both Wings","Nombre"],"value":"3","price":0,"productcode":"-"},{"name":["Custom Wings","Nombre"],"value":"4","price":0,"productcode":"-"},{"name":["Front / Back","Nombre"],"value":"5","price":0,"productcode":"-"}],"prices":0,"function":"var initPrep = function () {\n\n //Clean anchor Conten\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n //hide custom selected poles\n MasterModify(\"A206\", \"hideoption\", true, 5);\n\n //show custom option\n MasterModify(\"A206\", \"hideoption\", false, 4);\n\n //hide apply button\n MasterModify(\"A207\", \"showthis\", false);\n\n frontWings = [];\n frontWingDepth = 0;\n backWings = [];\n backWingDepth = 0;\n\n //hide wings dimensions options\n MasterModify(\"A208,A209,A210,A211,A234\", \"showthis\", false);\n\n};\n\nif (MasterValue(\"A206\") == 0) {\n\n storedWingOpt = 0;\n initPrep();\n\n //update 3D model\n sdApi.scene.pause();\n sdApi.parameters.updateAsync([\n { name: \"frontWings\", value: JSON.stringify(frontWings) },\n { name: \"backWings\", value: JSON.stringify(backWings) }\n ]).then(function () {\n updateWalls();\n });\n\n} else if (MasterValue(\"A206\") == 1) {\n\n if (MaxSizeWings[0] < MasterValue(\"A208\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add front wing.\");\n MasterModify(\"A206\", \"value\", storedWingOpt);\n\n } else {\n\n storedWingOpt = 1;\n initPrep();\n frontWings = Array.from({ length: MasterValue(\"A11\") }, (v, k) => k + 1);\n frontWingDepth = MasterValue(\"A208\");\n\n //show front wings dimensions options\n MasterModify(\"A208,A209,A234\", \"showthis\", true);\n\n //update 3D model\n sdApi.scene.pause();\n sdApi.parameters.updateAsync([\n { name: \"frontWings\", value: JSON.stringify(frontWings) },\n { name: \"backWings\", value: JSON.stringify(backWings) }\n ]).then(function () {\n updateWalls();\n });\n\n }\n\n} else if (MasterValue(\"A206\") == 2) {\n\n if (MaxSizeWings[1] < MasterValue(\"A210\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add back wing.\");\n MasterModify(\"A206\", \"value\", storedWingOpt);\n\n } else {\n\n storedWingOpt = 2;\n initPrep();\n backWings = Array.from({ length: MasterValue(\"A11\") }, (v, k) => k + 1);\n backWingDepth = MasterValue(\"A210\");\n\n //show back wings dimensions options\n MasterModify(\"A210,A211,A234\", \"showthis\", true);\n\n //update 3D model\n sdApi.scene.pause();\n sdApi.parameters.updateAsync([\n { name: \"frontWings\", value: JSON.stringify(frontWings) },\n { name: \"backWings\", value: JSON.stringify(backWings) }\n ]).then(function () {\n updateWalls();\n });\n\n }\n\n} else if (MasterValue(\"A206\") == 3) {\n\n if (MaxSizeWings[0] < MasterValue(\"A208\", \"min\") && MaxSizeWings[1] < MasterValue(\"A210\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add wings.\");\n MasterModify(\"A206\", \"value\", 0);\n storedWingOpt = 0;\n\n } else if (MaxSizeWings[0] < MasterValue(\"A208\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add front wing.\");\n MasterModify(\"A206\", \"value\", storedWingOpt);\n\n } else if (MaxSizeWings[1] < MasterValue(\"A210\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add back wing.\");\n MasterModify(\"A206\", \"value\", storedWingOpt);\n\n } else {\n\n storedWingOpt = 3;\n initPrep();\n frontWings = Array.from({ length: MasterValue(\"A11\") }, (v, k) => k + 1);\n frontWingDepth = MasterValue(\"A208\");\n backWings = Array.from({ length: MasterValue(\"A11\") }, (v, k) => k + 1);\n backWingDepth = MasterValue(\"A210\");\n\n //show wings dimensions options\n MasterModify(\"A208,A209,A210,A211,A234\", \"showthis\", true);\n\n //update 3D model\n sdApi.scene.pause();\n sdApi.parameters.updateAsync([\n { name: \"frontWings\", value: JSON.stringify(frontWings) },\n { name: \"backWings\", value: JSON.stringify(backWings) }\n ]).then(function () {\n updateWalls();\n });\n\n }\n\n} else if (MasterValue(\"A206\") == 4 || MasterValue(\"A206\") == 5) {\n\n if (MaxSizeWings[0] < MasterValue(\"A208\", \"min\") && MaxSizeWings[1] < MasterValue(\"A210\", \"min\")) {\n\n AlertMessage(\"Not Enough Height\", \"There is not enough eave height to add wings.\");\n MasterModify(\"A206\", \"value\", 0);\n storedWingOpt = 0;\n\n } else {\n\n storedWingOpt = 4;\n\n if (anchorsContent.length == 0) {\n var frontMessage = \"\";\n var backMessage = \"\";\n if (MaxSizeWings[0] < MasterValue(\"A208\", \"min\")) {\n frontMessage = \"

Front wing icons will not be displayed as there is not enough eave height.\"\n } else if (MaxSizeWings[1] < MasterValue(\"A210\", \"min\")) {\n backMessage = \"

Back wing icons will not be displayed as there is not enough eave height.\"\n }\n AlertMessage(\"Use the Icons\", \"Add and remove wings by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished.\" + frontMessage + backMessage);\n }\n\n //show apply button\n MasterModify(\"A207\", \"showthis\", true);\n MasterModify(\"A207\", \"name\", \"Apply Changes to Custom Wings\");\n MasterModify(\"A207\", \"text\", \"Apply\");\n\n var wingsAnchors = sdApi.scene.getData({ name: \"wingsAnchors\" }).data[0].data;\n\n //Clean anchor Content\n anchorsContent = [];\n var counter = 0;\n\n for (var i = 0; i < wingsAnchors.length; ++i) {\n\n counter++;\n if (counter > wingsAnchors.length / 2) { counter = 1 }\n\n var imageURL = addRemoveIcons[0];\n\n if ((wingsAnchors[i].alt.split(\"_\")[0] == \"frontWalls\" && frontWings.includes(counter)) || (wingsAnchors[i].alt.split(\"_\")[0] == \"backWalls\" && backWings.includes(counter))) {\n imageURL = addRemoveIcons[1]\n }\n\n if ((wingsAnchors[i].alt.split(\"_\")[0] == \"frontWalls\" && MaxSizeWings[0] >= MasterValue(\"A208\", \"min\")) || (wingsAnchors[i].alt.split(\"_\")[0] == \"backWalls\" && MaxSizeWings[1] >= MasterValue(\"A210\", \"min\"))) {\n\n var anchor = {\n version: \"1.0\",\n location: wingsAnchors[i].loc,\n format: \"image\",\n data: {\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: wingsAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) {\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n var thisAlt = elem.target.getAttribute(\"alt\").split(\"_\");\n\n if (elem.target.getAttribute(\"src\") == addRemoveIcons[0]) {\n\n elem.target.src = addRemoveIcons[1];\n\n if (thisAlt[0] == \"frontWalls\") {\n frontWings.push(Number(thisAlt[1]));\n frontWings.sort();\n } else {\n backWings.push(Number(thisAlt[1]));\n backWings.sort();\n }\n\n } else {\n\n elem.target.src = addRemoveIcons[0];\n\n if (thisAlt[0] == \"frontWalls\") {\n var index = frontWings.indexOf(Number(thisAlt[1]));\n frontWings.splice(index, 1);\n } else {\n var index = backWings.indexOf(Number(thisAlt[1]));\n backWings.splice(index, 1);\n }\n\n }\n\n //set text which show selected wings\n var frontText = \"\";\n var backText = \"\";\n var joinText = \"\";\n\n if (frontWings.length > 0) {\n frontText = \"Front \" + frontWings.join();\n }\n\n if (backWings.length > 0) {\n backText = \"Back \" + backWings.join();\n }\n\n if (frontWings.length > 0 && backWings.length > 0) {\n joinText = \" / \";\n }\n\n //show custom selected poles\n if (frontWings.length > 0 || backWings.length > 0) {\n MasterModify(\"A206\", \"nameoption\", frontText + joinText + backText, 5);\n MasterModify(\"A206\", \"value\", 5);\n storedWingOpt = 5;\n MasterModify(\"A206\", \"hideoption\", false, 5);\n MasterModify(\"A206\", \"hideoption\", true, 4);\n } else {\n MasterModify(\"A206\", \"value\", 4);\n storedWingOpt = 4;\n MasterModify(\"A206\", \"hideoption\", false, 4);\n MasterModify(\"A206\", \"hideoption\", true, 5);\n }\n\n MasterApply();\n\n }\n\n }\n\n if (i == allImages.length - 1) {\n clearInterval(waitImages);\n refocusDomElem();\n }\n\n }\n\n }, 250);\n\n });\n\n }\n\n};\n\nMasterFunction(\"A8_IN\");","id":"A206","menu":true},{"name":["Apply Changes to Custom Wings","Botón - Copia"],"help":["",""],"logo":false,"showthis":false,"indexlogo":0,"type":"button","text":["Apply","Botón"],"function":"if (MasterValue(\"A207\", \"text\")[0] == \"Apply\") {\n\n MasterModify(\"A207\", \"text\", \"Loading...\");\n if (frontWings.length > 0) {\n frontWingDepth = MasterValue(\"A208\");\n }\n if (backWings.length > 0) {\n backWingDepth = MasterValue(\"A210\")\n }\n\n sdApi.scene.pause();\n sdApi.parameters.updateAsync([\n\n { name: \"frontWings\", value: JSON.stringify(frontWings) },\n { name: \"backWings\", value: JSON.stringify(backWings) }\n\n ]).then(function () {\n\n if (frontWings.length == 0 && backWings.length == 0) {\n MasterModify(\"A206\", \"value\", 0);\n MasterModify(\"A206\", \"hideoption\", false, 4);\n MasterModify(\"A206\", \"hideoption\", true, 5);\n MasterModify(\"A207,A234\", \"showthis\", false);\n } else {\n MasterModify(\"A207\", \"name\", \"Edit Custom Wings\");\n MasterModify(\"A207\", \"text\", \"Edit\");\n }\n\n //show or hide front wings options\n if (frontWings.length > 0) {\n MasterModify(\"A208,A209,A234\", \"showthis\", true);\n } else {\n MasterModify(\"A208,A209\", \"showthis\", false);\n }\n\n //show or hide back wings options\n if (backWings.length > 0) {\n MasterModify(\"A210,A211,A234\", \"showthis\", true);\n } else {\n MasterModify(\"A210,A211\", \"showthis\", false);\n }\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id: \"anchors\",\n content: []\n });\n\n updateWalls();\n\n });\n\n} else if (MasterValue(\"A207\", \"text\")[0] == \"Edit\") {\n\n MasterFunction(\"A206\");\n MasterModify(\"A207\", \"name\", \"Apply Changes to Custom Wings\");\n MasterModify(\"A207\", \"text\", \"Apply\");\n\n}","id":"A207","menu":false},{"name":["Front Wing Depth (m)","Deslizador"],"value":3,"logo":"46-A208-1.svg","indexlogo":1,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":2,"max":18,"prices":0,"function":"MasterFunction(\"A8_IN\");\nfrontWingDepth = MasterValue(\"A208\");\n\nsdApi.parameters.updateAsync({name:\"Front Wing Size\", value:MasterValue(\"A208\")}).then(function() {\ncheckWings();\n});","id":"A208","menu":true,"load":false},{"name":["Front Wing Eave Height (m)","Deslizador - Copia"],"value":2.4,"logo":"46-A209-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":2.4,"max":8,"prices":0,"function":"//setting perspective camera\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function() {\nMasterView(\"left\");\n\nsdApi.parameters.updateAsync({name:\"Front Wing Height\", value:MasterValue(\"A209\")});\n});","id":"A209","menu":false,"load":false},{"name":["Back Wing Depth (m)","Deslizador - Copia"],"value":3,"logo":"46-A210-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":2,"max":18,"prices":0,"function":"MasterFunction(\"A8_IN\");\nbackWingDepth = MasterValue(\"A208\");\n\nsdApi.parameters.updateAsync({name:\"Back Wing Size\", value:MasterValue(\"A210\")}).then(function() {\ncheckWings();\n});","id":"A210","menu":true,"load":false},{"name":["Back Wing Eave Height (m)","Deslizador - Copia - Copia"],"value":2.4,"logo":"46-A211-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":2.4,"max":8,"prices":0,"function":"//setting perspective camera\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function() {\nMasterView(\"left\");\n\nsdApi.parameters.updateAsync({name:\"Back Wing Height\", value:MasterValue(\"A211\")});\n});","id":"A211","menu":false,"load":false},{"name":["Wings Roof Pitch (Degrees)","Deslizador"],"value":5,"logo":"46-A234-1.svg","indexlogo":1,"showthis":false,"code":"-","step":1,"type":"slider","help":["",""],"min":3,"max":35,"prices":0,"function":"//setting perspective camera\nsdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n).then(function() {\nMasterView(\"left\");\n\nsdApi.parameters.updateAsync({name:\"Roof Pitch Wings\", value:MasterValue(\"A234\")}).then(function() {\ncheckWings();\n});\n});","id":"A234","menu":false,"load":false}],"function":["showBayInputs = false;\nMasterFunction(\"A8_IN\");","MasterFunction(\"A8_OUT\");\n\n//make sure changes were applied\nMasterModify(\"A205,A207\",\"text\",\"Apply\");\nMasterFunction(\"A205,A207\");"],"id":"A203","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false},{"name":["Doors and Windows","Sección - Copia"],"logo":"44-A106-2.svg","indexlogo":2,"type":"section","showthis":true,"open":false,"data":[{"name":["Edit Door/Window","Sección"],"logo":false,"indexlogo":0,"type":"section","showthis":false,"open":false,"data":[{"name":["Select Wall","Lista"],"logo":"44-A176-1.svg","indexlogo":1,"showthis":true,"value":null,"help":["",""],"placeholder":["In which wall the object is located?",""],"type":"select","data":[{"name":["Left Wall","Nombre"],"value":"left","price":0,"productcode":"-"},{"name":["Internal Wall 1","Nombre"],"value":"intWall_1","price":0,"productcode":"-"},{"name":["Internal Wall 2","Nombre"],"value":"intWall_2","price":0,"productcode":"-"},{"name":["Right Wall","Nombre"],"value":"right","price":0,"productcode":"-"},{"name":["Front Wall","Nombre"],"value":"front","price":0,"productcode":"-"},{"name":["Back Wall","Nombre"],"value":"back","price":0,"productcode":"-"}],"prices":0,"function":"//setJSONval\n\nwallValue = MasterValue (MasterId);\n\nfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n doorsWindows[\"doorsWindows\"][i][\"wall\"] = MasterValue(MasterId);\n break;\n }\n}\n\n//moveCamera\n\nif (MasterValue(MasterId)==\"front\"){MasterView('down')}\nelse if (MasterValue(MasterId)==\"back\"){MasterView('up')}\nelse if (MasterValue(MasterId)==\"right\"){MasterView('right')}\nelse if (MasterValue(MasterId)==\"left\"){MasterView('left')}\nelse if (MasterValue(MasterId)==\"intWall_1\"){\n\tvar payload = {\n command:\"setCamera\",\n arguments:[{x:(MasterValue(\"A79\")*MasterValue(\"A10\"))-MasterValue(\"A9\"), y:0, z:ridgeHeight*2},{x:MasterValue(\"A79\")*MasterValue(\"A10\"), y:0, z:(MasterValue(\"A13\")/2)}, true, 3000]};\n\tSourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n}\nelse if (MasterValue(MasterId)==\"intWall_2\"){\n\tvar payload = {\n command:\"setCamera\",\n arguments:[{x:(MasterValue(\"A83\")*MasterValue(\"A10\"))-MasterValue(\"A9\"), y:0, z:ridgeHeight*2},{x:MasterValue(\"A83\")*MasterValue(\"A10\"), y:0, z:(MasterValue(\"A13\")/2)}, true, 3000]};\n\tSourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n}\n\n//showNextStep\n\nif (MasterValue(MasterId)==\"front\"||MasterValue(MasterId)==\"back\"){\n SetValShapeDiver(\"Bay Numbers\",true);\n\tMasterModify(MasterSectionId(MasterId,1),\"showthis\",true);\n}else{\n SetValShapeDiver(\"Bay Numbers\",false);\n MasterModify(MasterSectionId(MasterId,1),\"showthis\",false);\n\n\tif (MasterValue(MasterSectionId(MasterId,1)) == null){\n\t\tMasterModify(MasterSectionId(MasterId,1),\"value\",\"1\");\n\t}\n\n\tfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n\t if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n\t doorsWindows[\"doorsWindows\"][i][\"bay\"] = MasterValue(MasterSectionId(MasterId,1));\n\t break;\n\t }\n\t}\n\n\tMasterModify(MasterSectionId(MasterId,2),\"showthis\",null);\n if (style == null){\n MasterModify(MasterSectionId(MasterId,2),\"open\",true);\n }\n}\n\nfor (var i = 0; i <= 15; i++){\n\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",false,i);\n}\n\nfor (var i = MasterValue(\"A11\")+1; i <= 15; i++){\n\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n}\n\n//SECT A\nif (MasterValue(\"A30\") > 0 && ((wallValue == \"front\" && MasterValue(\"A42\") == false) || (wallValue == \"back\" && MasterValue(\"A63\") == false))){\n\tfor (var i = 1; i <= Number(MasterValue(\"A30\")); i++){\n\t\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n\t}\n}\n\n//SECT B\n\nif ((wallValue == \"front\" && MasterValue(\"A43\") == false) || (wallValue == \"back\" && MasterValue(\"A64\") == false)){\n\tvar end;\n\tif (MasterValue(\"A17\")==0){end=MasterValue(\"A59\");}\n\telse {end = MasterValue(\"A79\");}\n\n\tfor (var i = Number(MasterValue(\"A30\"))+1; i <= Number(end); i++){\n\t\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n\t}\n}\n\n\n//SECT C\nif (MasterValue(\"A17\") > 0 && ((wallValue == \"front\" && MasterValue(\"A44\") == false) || (wallValue == \"back\" && MasterValue(\"A65\") == false))){\n\tvar end;\n\tif (MasterValue(\"A17\")==1){end=MasterValue(\"A59\");}\n\telse {end = MasterValue(\"A83\");}\n\n\tfor (var i = Number(MasterValue(\"A79\"))+1; i <= Number(end); i++){\n\t\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n\t}\n}\n\n//SECT D\nif (MasterValue(\"A17\") > 1 && ((wallValue == \"front\" && MasterValue(\"A45\") == false) || (wallValue == \"back\" && MasterValue(\"A66\") == false))){\n\tfor (var i = Number(MasterValue(\"A83\"))+1; i <= Number(MasterValue(\"A59\")); i++){\n\t\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n\t}\n}\n\n//SECT E\nif (MasterValue(\"A59\") != MasterValue(\"A11\") && ((wallValue == \"front\" && MasterValue(\"A46\") == false) || (wallValue == \"back\" && MasterValue(\"A67\") == false))){\n\tfor (var i = Number(MasterValue(\"A59\"))+1; i <= MasterValue(\"A11\"); i++){\n\t\tMasterModify(MasterSectionId(nextId,1),\"hideoption\",true,i);\n\t}\n}\n\nif (style != null){updateDoors();}","id":"A176","menu":false,"load":false},{"name":["Select Bay","Lista - Copia"],"logo":"44-A181-1.svg","indexlogo":1,"showthis":false,"value":null,"help":["",""],"placeholder":["In which bay the object is located?",""],"type":"select","data":[{"name":["Bay 1","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Bay 2","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Bay 3","Nombre"],"value":"3","price":0,"productcode":"-"},{"name":["Bay 4","Nombre"],"value":"4","price":0,"productcode":"-"},{"name":["Bay 5","Nombre"],"value":"5","price":0,"productcode":"-"},{"name":["Bay 6","Nombre"],"value":"6","price":0,"productcode":"-"},{"name":["Bay 7","Nombre"],"value":"7","price":0,"productcode":"-"},{"name":["Bay 8","Nombre"],"value":"8","price":0,"productcode":"-"},{"name":["Bay 9","Nombre"],"value":"9","price":0,"productcode":"-"},{"name":["Bay 10","Nombre"],"value":"10","price":0,"productcode":"-"},{"name":["Bay 11","Nombre"],"value":"11","price":0,"productcode":"-"},{"name":["Bay 12","Nombre"],"value":"12","price":0,"productcode":"-"},{"name":["Bay 13","Nombre"],"value":"13","price":0,"productcode":"-"},{"name":["Bay 14","Nombre"],"value":"14","price":0,"productcode":"-"},{"name":["Bay 15","Nombre"],"value":"15","price":0,"productcode":"-"}],"prices":0,"function":"//setJSONval\n\nfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n doorsWindows[\"doorsWindows\"][i][\"bay\"] = MasterValue(MasterId);\n break;\n }\n}\n\n//moveCamera\n\nif (MasterValue(MasterSectionId(MasterId,0))==\"front\"){\n\tvar payload = {\n command:\"setCamera\",\n arguments:[{x:(MasterValue(MasterId)*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), y:(MasterValue(\"A10\")+MasterValue(\"A9\"))*-1, z:MasterValue(\"A13\")/2},{x:(MasterValue(MasterId)*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), y:0, z:MasterValue(\"A13\")/2}, true, 3000]};\n\tSourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n}else if (MasterValue(MasterSectionId(MasterId,0))==\"back\"){\n\tvar payload = {\n command:\"setCamera\",\n arguments:[{x:(MasterValue(MasterId)*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), y:MasterValue(\"A10\")+MasterValue(\"A9\"), z:MasterValue(\"A13\")/2},{x:(MasterValue(MasterId)*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), y:0, z:MasterValue(\"A13\")/2}, true, 3000]};\n\tSourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\t\n}\n\n//showNextStep\n\nif (style != null){updateDoors();}\nelse {MasterModify(MasterSectionId(MasterId,2),\"open\",true);}\n\nMasterModify(MasterSectionId(MasterId,2),\"showthis\",null);\nSetValShapeDiver(\"Bay Numbers\",false);","id":"A181","menu":false,"load":false},{"name":["Select Door/Window","Desplegable"],"logo":false,"indexlogo":0,"showthis":false,"type":"dropdown","open":false,"data":[{"name":["Which element do you want to place?","Imagen Pequeña"],"value":null,"showthis":true,"type":"image1","help":["",""],"logo":"44-A175-1.svg","indexlogo":1,"data":[{"indexlogo":2,"name":["Roller Door","Imagen"],"value":"roller","path":"44-A175-0-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Sectional Door","Imagen"],"value":"sectional","path":"44-A175-1-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":2,"name":["Coloursteel PA Door","Imagen"],"value":"steelPA","path":"44-A175-2-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":2,"name":["Zincalume PA Door","Imagen"],"value":"zincPA","path":"44-A175-3-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":2,"name":["Aluminium PA Door","Imagen"],"value":"alumPA","path":"44-A175-4-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Window","Imagen"],"value":"WD","path":"44-A175-5-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Ranch Slider","Imagen"],"value":"sliding","path":"44-A175-6-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Barn Door","Imagen"],"value":"barn","path":"44-A175-7-1.png","load":false,"price":0,"productcode":"-"}],"prices":0,"function":"//setJSONval\nfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterSectionId(MasterId))) {\n doorsWindows[\"doorsWindows\"][i][\"style\"] = MasterValue(MasterId);\n break;\n }\n}\n\n//changeSectionNameAndClose\n\nMasterModify(MasterSectionId(MasterId),\"open\",false);\nMasterModify(MasterSectionId(MasterId),\"name\",\"Change Door/Window\");\n\nstyle = MasterValue(MasterId);\nupdateDoors();","id":"A175","menu":false,"load":false}],"function":["",""],"id":"A174","location":3,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"5","name":["Doors and Windows","Sección - Copia"],"type":"section"},{"index":"6","name":["Edit Door/Window","Sección"],"type":"section"}],"menu":false},{"name":["Set Width","Deslizador"],"value":0,"logo":"44-A178-1.svg","indexlogo":1,"showthis":false,"code":"-","step":1,"type":"slider","help":["",""],"min":0,"max":3,"prices":0,"function":"updateDoors();","id":"A178","menu":false,"load":false},{"name":["Set Height","Deslizador"],"value":0,"logo":"44-A179-1.svg","indexlogo":1,"showthis":false,"code":"-","step":1,"type":"slider","help":["",""],"min":0,"max":3,"prices":0,"function":"updateDoors();","id":"A179","menu":false,"load":false},{"name":["Set Location in Wall","Deslizador"],"value":0.4,"logo":false,"indexlogo":0,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":1,"prices":0,"function":"updateDoors();","id":"A177","menu":false},{"name":["Set Sill Height (m)","Deslizador - Copia"],"value":0,"logo":false,"indexlogo":0,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":1,"prices":0,"function":"updateDoors();","id":"A185","menu":false},{"name":["Opening Side","Lista"],"logo":"44-A182-1.svg","indexlogo":1,"showthis":false,"value":"out","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["OUT","Nombre"],"value":"out","price":0,"productcode":"-"},{"name":["IN","Nombre"],"value":"in","price":0,"productcode":"-"}],"prices":0,"function":"for (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n doorsWindows[\"doorsWindows\"][i][\"openingSide\"] = MasterValue(MasterId);\n break;\n }\n}\nSetValShapeDiver(\"DoorsAndWindows\",JSON.stringify(doorsWindows,null,0));","id":"A182","menu":false,"load":false},{"name":["Hinge Position","Lista - Copia"],"logo":"44-A183-1.svg","indexlogo":1,"showthis":false,"value":"right","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["RIGHT","Nombre"],"value":"right","price":0,"productcode":"-"},{"name":["LEFT","Nombre"],"value":"left","price":0,"productcode":"-"}],"prices":0,"function":"for (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n doorsWindows[\"doorsWindows\"][i][\"hingePost\"] = MasterValue(MasterId);\n break;\n }\n}\nSetValShapeDiver(\"DoorsAndWindows\",JSON.stringify(doorsWindows,null,0));","id":"A183","menu":false,"load":false},{"name":["Remove Door/Window","Botón"],"help":["",""],"logo":"44-A180-1.svg","showthis":true,"indexlogo":1,"type":"button","text":["Remove","Botón"],"function":"for (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == MasterSectionId(MasterId)) {\n doorsWindows[\"doorsWindows\"].splice(i,1);\n break;\n }\n}\nupdateDoors();\n\nMasterModify(\"Menu1\", \"close\");\nMasterModify(itemId,\"showthis\",false);","id":"A180","menu":false,"load":false}],"function":["itemId = MasterId;\nnextId = \"A\"+(Number(itemId.match(/[0-9]+/g))+1);\n\nwidthId = MasterSectionId(nextId,3);\nheightId = MasterSectionId(nextId,4);\nlocationXId = MasterSectionId(nextId,5);\nlocationZId = MasterSectionId(nextId,6);\nopeningSideId = MasterSectionId(nextId,7);\nhingePostId = MasterSectionId(nextId,8);\n\nif (MasterValue(\"A17\")==0){\n MasterModify(nextId,\"hideoption\",true,\"intWall_1\");\n MasterModify(nextId,\"hideoption\",true,\"intWall_2\");\n} else if (MasterValue(\"A17\")==1){\n MasterModify(nextId,\"hideoption\",false,\"intWall_1\");\n MasterModify(nextId,\"hideoption\",true,\"intWall_2\");\n} else {\n MasterModify(nextId,\"hideoption\",false,\"intWall_1\");\n MasterModify(nextId,\"hideoption\",false,\"intWall_2\");\n}\n\nif (doorsWindows[\"doorsWindows\"].length != 0){\n for (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == itemId) {\n doorsWindows[\"doorsWindows\"][i][\"dimensions\"] = true;\n SetValShapeDiver(\"DoorsAndWindows\",JSON.stringify(doorsWindows,null,0));\n style = doorsWindows[\"doorsWindows\"][i][\"style\"];\n wallValue = doorsWindows[\"doorsWindows\"][i][\"wall\"];\n\n if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"front\"){\n var payload = {\n command:\"setCamera\",\n arguments:[{\n x:(doorsWindows[\"doorsWindows\"][i][\"bay\"]*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2),\n y:(MasterValue(\"A10\")+MasterValue(\"A9\"))*-1, \n z:MasterValue(\"A13\")/2\n },{\n x:(doorsWindows[\"doorsWindows\"][i][\"bay\"]*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), \n y:0, \n z:MasterValue(\"A13\")/2\n }, true, 3000]\n };\n SourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n }\n else if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"back\"){\n var payload = {\n command:\"setCamera\",\n arguments:[{\n x:(doorsWindows[\"doorsWindows\"][i][\"bay\"]*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), \n y:MasterValue(\"A10\")+MasterValue(\"A9\"), \n z:MasterValue(\"A13\")/2\n },{\n x:(doorsWindows[\"doorsWindows\"][i][\"bay\"]*MasterValue(\"A10\"))-(MasterValue(\"A10\")/2), \n y:0, \n z:MasterValue(\"A13\")/2\n }, true, 3000]\n };\n SourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\"); \n }\n else if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"right\"){MasterView('right')}\n else if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"left\"){MasterView('left')}\n else if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"intWall_1\"){\n var payload = {\n command:\"setCamera\",\n arguments:[{\n x:(MasterValue(\"A79\")*MasterValue(\"A10\"))-MasterValue(\"A9\"), \n y:0, \n z:ridgeHeight*2\n },{\n x:MasterValue(\"A79\")*MasterValue(\"A10\"), \n y:0, \n z:(MasterValue(\"A13\")/2)\n }, true, 3000]\n };\n SourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n }\n else if (doorsWindows[\"doorsWindows\"][i][\"wall\"] == \"intWall_2\"){\n var payload = {\n command:\"setCamera\",\n arguments:[{\n x:(MasterValue(\"A83\")*MasterValue(\"A10\"))-MasterValue(\"A9\"), \n y:0, \n z:ridgeHeight*2\n },{\n x:MasterValue(\"A83\")*MasterValue(\"A10\"), \n y:0, \n z:(MasterValue(\"A13\")/2)\n }, true, 3000]\n };\n SourceShapeDiver.postMessage(payload,\"https://www.shapediver.com\");\n }\n break;\n }else{\n if (i == (doorsWindows[\"doorsWindows\"].length-1)){\n style = null;\n doorsWindows[\"doorsWindows\"].push({\n \"ID\": itemId,\n \"style\": \"roller\",\n \"wall\": \"front\",\n \"bay\": 1,\n \"location\": [0,0],\n \"width\": 0,\n \"height\": 0,\n \"openingSide\": \"out\",\n \"hingePost\": \"right\",\n \"dimensions\": true,\n });\n break;\n }\n }\n }\n}else{\n style = null;\n doorsWindows[\"doorsWindows\"].push({\n \"ID\": itemId,\n \"style\": \"roller\",\n \"wall\": \"front\",\n \"bay\": 1,\n \"location\": [0,0],\n \"width\": 0,\n \"height\": 0,\n \"openingSide\": \"out\",\n \"hingePost\": \"right\",\n \"dimensions\": true,\n });\n}\n\n//alert(JSON.stringify(doorsWindows,null,0));","for (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"ID\"] == itemId) {\n doorsWindows[\"doorsWindows\"][i][\"dimensions\"] = false;\n break;\n }\n}\nSetValShapeDiver(\"DoorsAndWindows\",JSON.stringify(doorsWindows,null,0));\nMasterView(\"backward\");\n\nfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n if (doorsWindows[\"doorsWindows\"][i][\"style\"] != \"WD\") {\n MasterModify(\"A186\",\"showthis\",null);\n break;\n }else{\nMasterModify(\"A186\",\"showthis\",false);\n}\n}"],"id":"A172","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"5","name":["Doors and Windows","Sección - Copia"],"type":"section"}],"menu":false},{"name":["Select Edition Mode","Lista"],"logo":false,"indexlogo":0,"showthis":false,"value":null,"help":["",""],"placeholder":["Select Edition Mode",""],"type":"select","data":[{"name":["Add Doors/Windows","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["Remove Doors/Windows","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Edit Doors/Windows","Nombre"],"value":"2","price":0,"productcode":"-"}],"prices":0,"function":"AlertMessage(\"Use the Icons\", \"Select where to add doors or windows by clicking on the icons displayed in the 3D model.\");\n\ndrWdWallLocAnchors = sdApi.scene.getData({ name: \"drWdWallLocAnchors\" }).data[0].data;\n\n//Clean anchor Content\nanchorsContent = [];\n\nfor (var i = 0; i < drWdWallLocAnchors.length; ++i) {\n\n var anchor = {\n version: \"1.0\",\n location: drWdWallLocAnchors[i].loc,\n format: \"image\",\n data: {\n src: addRemoveIcons[0],\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: drWdWallLocAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n}\n\n//Create Anchor Asset\nsdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n}).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n //clean images icons variable\n allImagesIcons = [];\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) {\n\n allImagesIcons.push(allImages[i]);\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n currentWall = elem.target.getAttribute(\"alt\");\n\n MasterModify(\"A223\", \"showthis\", true);\n MasterModify(\"A223\", \"open\", true);\n\n MasterApply();\n\n }\n\n }\n\n if (i == allImages.length - 1) {\n clearInterval(waitImages);\n }\n\n }\n\n }, 0);\n\n});","id":"A225","menu":false},{"name":["Change Edition Wall","Botón"],"help":["",""],"logo":"46-A232-1.svg","showthis":false,"indexlogo":1,"type":"button","text":["Change","Botón"],"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n drsWdsJSON.DrsWds[i].dimensions = false;\n\n //if there is a collision\n if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision)\n {\n drsWdsJSON.DrsWds.splice(i,1);\n AlertMessage(\"Door/Window Removed\",MasterValue(\"A224\",\"nameoption\") + \" was removed as it was collisioning with other doors or windows.\");\n sdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n )\n }\n};\n\n//hide windows/doors dimensions\nsdApi.scene.toggleGeometry([], [drWdDimScenePath]);\n\nMasterModify(\"A224\",\"value\",null);\nMasterModify(\"A223\", \"name\", \"Select Door/Window\");\nMasterModify(\"A171,A223,A226,A227,A228,A229,A230,A231,A232,A233\", \"showthis\", false);\ncurrentID = null;\neditionMode = false;\nMasterFunction('A106_IN');","id":"A232","menu":false,"load":false},{"name":["Add Door/Window","Botón"],"help":["",""],"logo":"46-A171-1.svg","showthis":false,"indexlogo":1,"type":"button","text":["Add","Botón"],"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n drsWdsJSON.DrsWds[i].dimensions = false;\n\n //if there is a collision\n if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision)\n {\n drsWdsJSON.DrsWds.splice(i,1);\n AlertMessage(\"Door/Window Removed\",MasterValue(\"A224\",\"nameoption\") + \" was removed as it was collisioning with other doors or windows.\");\n sdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n ).then(function ()\n {\n currentID = null;\n drWdEditionAnchors();\n });\n }\n else if (!editDrWdMessage)\n {\n editDrWdMessage = true;\n AlertMessage(\"Edit Existing Doors/windows\",\"You can edit existing doors and windows by clicking on the edit icon shown in front of them in the 3D model.\")\n }\n}\n\n//hide windows/doors dimensions\nsdApi.scene.toggleGeometry([], [drWdDimScenePath]);\n\nMasterModify(\"A224\",\"value\",null);\nMasterModify(\"A223\", \"name\", \"Select Door/Window\");\nMasterModify(\"A223\", \"showthis\", true);\nMasterModify(\"A223\", \"open\", true);\nMasterModify(\"A226,A227,A228,A229,A230,A231,A233\", \"showthis\", false);\ncurrentID = null;\neditionMode = false;\ndrWdEditionAnchors();","id":"A171","menu":false,"load":false},{"name":["Remove","Botón"],"help":["",""],"logo":"46-A233-1.svg","showthis":false,"indexlogo":1,"type":"button","text":["Remove","Botón"],"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds.splice(i,1);\n sdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n ).then(function ()\n {\n currentID = null;\n });\n }\n}\nMasterModify(\"A223,A226,A227,A228,A229,A230,A231,A233\", \"showthis\", false);","id":"A233","menu":false,"load":false},{"name":["Select Door/Window","Desplegable"],"logo":false,"indexlogo":0,"showthis":false,"type":"dropdown","open":false,"data":[{"name":["Select Door/Window","Imagen Pequeña"],"value":null,"showthis":true,"type":"image1","help":["",""],"logo":"46-A224-1.svg","indexlogo":1,"data":[{"indexlogo":1,"name":["Roller Door","Imagen"],"value":"roller","path":"46-A224-0-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Sectional Door","Imagen"],"value":"sectional","path":"46-A224-1-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":2,"name":["Zincalume PA Door","Imagen"],"value":"zincPA","path":"46-A224-2-2.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Coloursteel PA Door","Imagen"],"value":"steelPA","path":"46-A224-3-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Aluminium PA Door","Imagen"],"value":"alumPA","path":"46-A224-4-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Ranch Slider","Imagen"],"value":"sliding","path":"46-A224-5-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Barn Door","Imagen"],"value":"BarnDr","path":"46-A224-6-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Window","Imagen"],"value":"WD","path":"46-A224-7-1.png","load":false,"price":0,"productcode":"-"}],"prices":0,"function":"//rename dropdown\nMasterModify(\"A223\", \"name\", newDropdownName(\"Loading \" + MasterValue(\"A224\", \"nameoption\")));\n\n//if edition mode is to add components\nif (!editionMode) {\n currentID = Date.now().toString();\n}\n\nvar drsWdsLimitsJSON = JSON.parse(sdApi.parameters.get({ name: \"drsWdsLimitsJSON\" }).data[0].value).DrsWdsLimits;\nvar initHeight;\nvar initWidth;\nvar initLocX = MasterValue(\"A228\");\nvar initLocZ = 0;\n\nfor (var i = 0; i < drsWdsLimitsJSON.length; ++i) {\n if (MasterValue(\"A224\") == drsWdsLimitsJSON[i].style) {\n initHeight = drsWdsLimitsJSON[i].heightLimits[0];\n initWidth = drsWdsLimitsJSON[i].widthLimits[0];\n //if edition mode is to add component, add the default minimum X offset\n if (!editionMode)\n {\n initLocX = drsWdsLimitsJSON[i].widthOffset;\n }\n break;\n }\n}\n\nif (MasterValue(\"A224\") == \"WD\") {\n initLocZ = 1;\n}\n\nvar initDrWd = {\n ID: currentID,\n style: MasterValue(\"A224\"),\n height: initHeight,\n width: initWidth,\n wall: currentWall,\n loc: [initLocX, initLocZ],\n dimensions: true\n};\n\nif (MasterValue(\"A224\") == \"BarnDr\" || MasterValue(\"A224\") == \"zincPA\" || MasterValue(\"A224\") == \"steelPA\" || MasterValue(\"A224\") == \"alumPA\") {\n initDrWd.openSide = MasterValue(\"A230\");\n}\n\nif (MasterValue(\"A224\") == \"zincPA\" || MasterValue(\"A224\") == \"steelPA\" || MasterValue(\"A224\") == \"alumPA\") {\n initDrWd.hingeLoc = MasterValue(\"A231\");\n}\n\nvar thisComponentLoc;\n\n//if edition mode is to add component, add new object to doors and windows JSON\nif (!editionMode) {\nconsole.log(initDrWd);\n thisComponentLoc = drsWdsJSON.DrsWds.length;\n drsWdsJSON.DrsWds.push(initDrWd); \n}\n//else if edition mode is to edit components, replace component with new selected one\nelse\n{\n for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) {\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n //store current window/door description in case process fails so we can come back to it\n storeDrWdJSON = drsWdsJSON.DrsWds[i];\n storeDrWdOpt = MasterValue(\"A224\");\n\n thisComponentLoc = i;\n drsWdsJSON.DrsWds[i] = initDrWd;\n }\n }\n}\n\nsdApi.scene.pause();\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n drsWdsAnchors = sdApi.scene.getData({ name: \"drsWdsAnchors\" }).data[0].data;\n\n //check if there is enough space\n if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false || drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) {\n\n //if edition mode is to add component, remove component as it failed.\n if (!editionMode)\n {\n drsWdsJSON.DrsWds.splice(thisComponentLoc, 1);\n }\n //else if edition mode is to edit components, go back to stored window/door description\n else\n {\n drsWdsJSON.DrsWds[thisComponentLoc] = storeDrWdJSON;\n }\n\n sdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n ).then(function ()\n {\n sdApi.scene.resume();\n if (!editionMode)\n {\n MasterModify(\"A223\", \"name\",\"Select Door/Window\");\n }\n //if we were editing an existing door/window\n else\n {\n MasterModify(\"A224\", \"value\", storeDrWdOpt);\n MasterModify(\"A223\", \"name\", newDropdownName(\"Change \" + MasterValue(\"A224\", \"nameoption\")));\n }\nMasterApply();\n });\n\n //alert messages\n if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false && drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) {\n AlertMessage(\"Not Enough Height\",\"There is no enough wall length and wall height for \" + MasterValue(\"A224\", \"nameoption\") + \".\");\n }\n else if (drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) {\n AlertMessage(\"Not Enough Height\",\"There is no enough wall height for \" + MasterValue(\"A224\", \"nameoption\") + \".\");\n }\n else if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false) {\n AlertMessage(\"Not Enough Height\",\"There is no enough wall length for \" + MasterValue(\"A224\", \"nameoption\") + \".\");\n }\n }\n else\n {\n //show windows/doors dimensions\n sdApi.scene.toggleGeometry([drWdDimScenePath],[]);\n\n editionMode = true;\n\n //check collisions\n if (drsWdsAnchors[thisComponentLoc].collision)\n {\n AlertMessage(\"Collision Detected\",\"Your \" + MasterValue(\"A224\", \"nameoption\") + \" is collisioning with other doors or windows. If possible, please solve this collision by moving, resizing or changing \" + MasterValue(\"A224\", \"nameoption\") + \", otherwise please remove it.\");\n }\n\n //show opening side option\n if (MasterValue(\"A224\") == \"BarnDr\" || MasterValue(\"A224\") == \"zincPA\" || MasterValue(\"A224\") == \"steelPA\" || MasterValue(\"A224\") == \"alumPA\")\n {\n MasterModify(\"A230\", \"showthis\", true);\n }\n else\n {\n MasterModify(\"A230\", \"showthis\", false);\n }\n\n //show hinge position option\n if (MasterValue(\"A224\") == \"zincPA\" || MasterValue(\"A224\") == \"steelPA\" || MasterValue(\"A224\") == \"alumPA\")\n {\n MasterModify(\"A231\", \"showthis\", true);\n }\n else {\n MasterModify(\"A231\", \"showthis\", false);\n }\n\n updateWdDrOptions();\n drWdEditionAnchors();\n\n }\n});","id":"A224","menu":true,"load":false}],"function":["",""],"id":"A223","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"5","name":["Doors and Windows","Sección - Copia"],"type":"section"}],"menu":false},{"name":["Width (m)","Deslizador"],"value":1,"logo":"46-A226-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0.6,"max":6,"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].width = MasterValue(\"A226\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A226","menu":true,"load":false},{"name":["Height (x)","Deslizador"],"value":null,"logo":"46-A227-1.svg","indexlogo":1,"showthis":true,"code":"-","step":0.1,"type":"slider","help":["",""],"min":1,"max":6,"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].height = MasterValue(\"A227\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A227","menu":false,"load":false},{"name":["Location in Wall (m)","Deslizador"],"value":null,"logo":false,"indexlogo":0,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0.1,"max":1,"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].loc[0] = MasterValue(\"A228\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A228","menu":false},{"name":["Window Sill Height (m)","Deslizador"],"value":null,"logo":false,"indexlogo":0,"showthis":false,"code":"-","step":0.1,"type":"slider","help":["",""],"min":0,"max":5,"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].loc[1] = MasterValue(\"A229\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A229","menu":false},{"name":["Door Opening Side","Lista"],"logo":"46-A230-1.svg","indexlogo":1,"showthis":false,"value":"out","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["Outwards","Nombre"],"value":"out","price":0,"productcode":"-"},{"name":["Inwards","Nombre"],"value":"in","price":0,"productcode":"-"}],"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].openSide = MasterValue(\"A230\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A230","menu":false,"load":false},{"name":["Door Hinge Position","Lista"],"logo":"46-A231-1.svg","indexlogo":1,"showthis":false,"value":"right","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["Right Side","Nombre"],"value":"right","price":0,"productcode":"-"},{"name":["Left Side","Nombre"],"value":"left","price":0,"productcode":"-"}],"prices":0,"function":"for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n if (drsWdsJSON.DrsWds[i].ID == currentID)\n {\n drsWdsJSON.DrsWds[i].hingeLoc = MasterValue(\"A231\");\n break;\n }\n}\n\nsdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n).then(function ()\n{\n updateWdDrOptions();\n drWdEditionAnchors();\n});","id":"A231","menu":false,"load":false},{"name":["Summary Result","Texto"],"help":["",""],"value":"Summary","showthis":false,"placeholder":["",""],"logo":false,"indexlogo":0,"type":"text","id":"A248","function":"","prices":0,"menu":false}],"function":["showBayInputs = false;\nMasterFunction('A8_IN');\n\nAlertMessage(\"Select Wall\", \"Select which wall to edit by clicking on the edit icons displayed in the 3D model.\");\n\ndrWdWallLocAnchors = sdApi.scene.getData({ name: \"drWdWallLocAnchors\" }).data[0].data;\n\n//Clean anchor Content\nanchorsContent = [];\n\nfor (var i = 0; i < drWdWallLocAnchors.length; ++i) {\n\n var anchor = {\n version: \"1.0\",\n location: drWdWallLocAnchors[i].loc,\n format: \"image\",\n data: {\n src: editIcon,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height: 28,\n width: 28,\n alt: drWdWallLocAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n}\n\n//Create Anchor Asset\nsdApi.scene.updateAsync({\n\n id: \"anchors\",\n content: [\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n}).then(function () {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is edit icon option\n if (allImages[i].src == editIcon) {\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n currentWall = elem.target.getAttribute(\"alt\");\n\n //enebling zoom and changing camera type\n sdApi.updateSettingsAsync(\n {\n scene: {\n camera: {\n controls: {\n orbit: {\n enableZoom: true\n }\n },\n cameraTypes: {\n active: 0\n }\n }\n }\n }\n ).then(function () {\n //move camera in front of wall\n for (var i = 0; i < drWdWallLocAnchors.length; ++i) {\n if (currentWall == drWdWallLocAnchors[i].alt) {\n sdApi.scene.camera.updateAsync(\n {\n position: drWdWallLocAnchors[i].position,\n target: drWdWallLocAnchors[i].target\n },\n {\n duration: viewerSpeed\n }\n );\n break;\n }\n }\n });\n\n //hide general dimensions\n sdApi.scene.toggleGeometry([], [dimensionsScenePath]);\n\n //show add door/window option and change wall option\n MasterModify(\"A171,A232\", \"showthis\", true);\n MasterApply();\n\n drWdEditionAnchors();\n\n }\n\n }\n\n if (i == allImages.length - 1) {\n clearInterval(waitImages);\n }\n\n }\n\n }, 250);\n\n});","//hide windows/doors dimensions\nsdApi.scene.toggleGeometry([], [drWdDimScenePath]);\n\nfor (var i = 0; i < drsWdsJSON.DrsWds.length; ++i)\n{\n drsWdsJSON.DrsWds[i].dimensions = false;\n\n //if there is a collision\n if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision)\n {\n drsWdsJSON.DrsWds.splice(i,1);\n AlertMessage(\"Door/Window Removed\",MasterValue(\"A224\",\"nameoption\") + \" was removed as it was collisioning with other doors or windows.\");\n sdApi.parameters.updateAsync(\n { name: \"drsWdsJSON\", value: JSON.stringify(drsWdsJSON) }\n )\n }\n};\n\nMasterModify(\"A224\",\"value\",null);\nMasterModify(\"A223\", \"name\", \"Select Door/Window\");\nMasterModify(\"A171,A223,A226,A227,A228,A229,A230,A231,A232,A233\", \"showthis\", false);\ncurrentID = null;\neditionMode = false;\n\n//Hide Anchor Asset\n sdApi.scene.updateAsync({\n id:\"anchors\",\n content:[]\n });\n\nMasterFunction('A8_OUT');"],"id":"A106","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false,"fixed":false},{"name":["Cladding Options","Sección"],"logo":"44-A84-1.svg","indexlogo":1,"type":"section","showthis":true,"open":false,"data":[{"name":["Ridge and Barge Flashing?","Checkbox"],"value":true,"showthis":true,"help":["",""],"logo":"44-A86-3.svg","indexlogo":3,"type":"checkbox","name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"prices":{"false":0,"true":0},"function":"updateBeforeDownload.push({name:\"Ridge and Barge Flashing?\",value: MasterValue(\"A86\")});\n\nsdApi.parameters.updateAsync({name:\"Ridge and Barge Flashing?\",value: true}).then(function(){\nvar ridgeBargePaths = [roofScenePath + \".content_2\",roofScenePath + \".content_3\"];\n\n//show hide geometry in the scene\nif (MasterValue(\"A86\")){\n sdApi.scene.toggleGeometry(ridgeBargePaths,[]);\n} else {\n sdApi.scene.toggleGeometry([],ridgeBargePaths);\n}\n\n//show or hide colors options\nMasterModify(\"A94,A96\",\"showthis\", MasterValue(\"A86\"));\n});","id":"A86","menu":true,"load":false},{"name":["Gutters?","Checkbox"],"value":true,"showthis":true,"help":["",""],"logo":"44-A87-1.svg","indexlogo":1,"type":"checkbox","name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"prices":{"false":0,"true":0},"function":"updateBeforeDownload.push({name:\"Gutters?\", value: MasterValue(\"A87\")});\n\nsdApi.parameters.updateAsync({name:\"Gutters?\", value: true}).then(function(){\nvar gutterPath = [roofScenePath + \".content_4\"];\n\n//show hide geometry in the scene\nif (MasterValue(\"A87\")){\n sdApi.scene.toggleGeometry(gutterPath,[]);\n} else {\n sdApi.scene.toggleGeometry([],gutterPath);\n}\n\n//show or hide colors options\nMasterModify(\"A100\",\"showthis\",MasterValue(\"A87\"));\n});","id":"A87","menu":true,"load":false},{"name":["Corner Flashing?","Checkbox - Copia"],"value":true,"showthis":true,"help":["",""],"logo":"44-A105-3.svg","indexlogo":3,"type":"checkbox","name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"prices":{"false":0,"true":0},"function":"updateBeforeDownload.push({name:\"Corner Flashing?\", value: MasterValue(\"A105\")});\n//make sure all assets are shown\nsdApi.parameters.updateAsync({name:\"Corner Flashing?\", value: true}).then(function(){\nvar cornerPath = [wallScenePath + \".content_2\"];\n\n//show hide geometry in the scene\nif (MasterValue(\"A105\")){\n sdApi.scene.toggleGeometry(cornerPath,[]);\n} else {\n sdApi.scene.toggleGeometry([],cornerPath);\n}\n\n//show or hide colors options\nMasterModify(\"A103\",\"showthis\",MasterValue(\"A105\"));\n});","id":"A105","menu":true,"load":false},{"name":["Skylights","Lista"],"logo":"46-A212-1.svg","indexlogo":1,"showthis":true,"value":"0","help":["",""],"placeholder":["",""],"type":"select","data":[{"name":["None","Nombre"],"value":"0","price":0,"productcode":"-"},{"name":["All Bays","Nombre"],"value":"1","price":0,"productcode":"-"},{"name":["Custom","Nombre"],"value":"2","price":0,"productcode":"-"},{"name":["Bays","Nombre"],"value":"3","price":0,"productcode":"-"}],"prices":0,"function":"//setting camera to top view\nMasterView(\"backward\");\n\nif (MasterValue(\"A212\") == 0 || MasterValue(\"A212\") == 1) {\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id:\"anchors\",\n content:[]\n });\n\n //hide custom selected skylights\n MasterModify(\"A212\",\"hideoption\",true,3);\n\n //show custom option\n MasterModify(\"A212\",\"hideoption\",false,2);\n\n //hide apply button\n MasterModify(\"A213\",\"showthis\",false);\n \n skylights = [];\n\n}\n\nif (MasterValue(\"A212\") == 1) {\n\n skylights = Array.from({length: MasterValue(\"A11\")}, (v, k) => k+1);\n\n} else if (MasterValue(\"A212\") == 2 || MasterValue(\"A212\") == 3) {\n\n if (anchorsContent.length == 0){\n AlertMessage(\"Use the Icons\",\"Add and remove skylights by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished.\");\n }\n\n //show apply button\n MasterModify(\"A213\",\"showthis\",true);\n MasterModify(\"A213\",\"name\",\"Apply Changes to Skylights\");\n MasterModify(\"A213\",\"text\",\"Apply\");\n\n var skylightsAnchors = sdApi.scene.getData({name:\"skylightsAnchors\"}).data[0].data;\n\n anchorsContent = [];\n\n for (var i = 0; i < skylightsAnchors.length; ++i) {\n\n var imageURL = addRemoveIcons[0];\n\n if (skylights.includes(i+1)){\n imageURL = addRemoveIcons[1]\n }\n\n var anchor = {\n version:\"1.0\",\n location: skylightsAnchors[i].loc,\n format:\"image\",\n data:{\n src: imageURL,\n positioning: {\n horizontal: 'center',\n vertical: 'center'\n },\n height:28,\n width:28,\n alt: skylightsAnchors[i].alt,\n hidden: false\n }\n }\n\n anchorsContent.push(anchor);\n\n }\n\n //Create Anchor Asset\n sdApi.scene.updateAsync({\n\n id:\"anchors\",\n content:[\n {\n format: sdApi.scene.FORMAT.ANCHOR,\n data: anchorsContent\n }\n ]\n\n }).then(function() {\n\n //wait image elements to be added to the html page\n var waitImages = setInterval(function () {\n\n //look for the images to add click events\n var allImages = document.getElementsByTagName('IMG');\n\n for (var i = 0; i < allImages.length; ++i) {\n\n //if image is add or remove option\n if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]){\n\n //make sure image gets placed in the correct place\n allImages[i].parentElement.style.position = \"absolute\";\n\n //make sure image can be clicked\n allImages[i].style.pointerEvents = \"auto\";\n allImages[i].style.cursor = \"pointer\";\n\n //when is clicked\n allImages[i].onclick = function (elem) {\n\n if (elem.target.getAttribute(\"src\") == addRemoveIcons[0]) {\n\n elem.target.src = addRemoveIcons[1];\n skylights.push(Number(elem.target.getAttribute(\"alt\")));\n skylights.sort();\n\n } else {\n\n elem.target.src = addRemoveIcons[0];\n var index = skylights.indexOf(Number(elem.target.getAttribute(\"alt\")));\n skylights.splice(index,1);\n\n }\n\n //show custom selected poles\n if (skylights.length > 0){\n MasterModify(\"A212\",\"nameoption\",\"Bays \" + skylights.join(),3);\n MasterModify(\"A212\",\"value\",3);\n MasterModify(\"A212\",\"hideoption\",false,3);\n MasterModify(\"A212\",\"hideoption\",true,2);\n } else {\n MasterModify(\"A212\",\"value\",2);\n MasterModify(\"A212\",\"hideoption\",false,2);\n MasterModify(\"A212\",\"hideoption\",true,3);\n }\n \n MasterApply();\n\n }\n\n }\n\n if (i == allImages.length - 1){\n clearInterval(waitImages);\n\n //refocus dom elements\n sdApi.updateSettingsAsync({scene:{camera:{fov:5}}});\n setTimeout(function(){\n sdApi.updateSettingsAsync({scene:{camera:{fov:45}}});\n },50);\n }\n\n }\n\n },250);\n\n });\n\n}\n\n//apply changes to skylights in 3D model\nif (MasterValue(\"A212\") == 0 || MasterValue(\"A212\") == 1) {\n sdApi.parameters.updateAsync({name:\"skylights\", value:JSON.stringify(skylights)});\n}","id":"A212","menu":true,"load":false},{"name":["Apply Changes to Skylights","Botón"],"help":["",""],"logo":false,"showthis":false,"indexlogo":0,"type":"button","text":["Apply","Botón"],"function":"if (MasterValue(\"A213\",\"text\")[0] == \"Apply\"){\n\n MasterModify(\"A213\",\"text\",\"Loading...\");\n\n sdApi.parameters.updateAsync({name:\"skylights\", value:JSON.stringify(skylights)}).then(function() {\n\n if (skylights.length == 0){\n MasterModify(\"A212\",\"value\",0);\n MasterModify(\"A212\",\"hideoption\",false,2);\n MasterModify(\"A212\",\"hideoption\",true,3);\n MasterModify(\"A213\",\"showthis\",false);\n }else{\n MasterModify(\"A213\",\"name\",\"Edit Custom Skylights\");\n MasterModify(\"A213\",\"text\",\"Edit\");\n }\n\n MasterApply();\n\n //Clean anchor Content\n anchorsContent = [];\n\n //Hide Anchor Asset\n sdApi.scene.updateAsync({\n id:\"anchors\",\n content:[]\n });\n\n });\n\n} else if (MasterValue(\"A213\",\"text\")[0] == \"Edit\"){\n\n MasterFunction(\"A212\");\n MasterModify(\"A213\",\"name\",\"Apply Changes to Skylights\");\n MasterModify(\"A213\",\"text\",\"Apply\");\n\n}","id":"A213","menu":false},{"name":["Roofing","Imagen Pequeña"],"value":"0","showthis":true,"type":"image1","help":["Please note, if you roof pitch is under 8 degrees it is recommended that you use 5 rib profile roofing.",""],"logo":"44-A89-1.svg","indexlogo":1,"data":[{"indexlogo":1,"name":["5 Rib","Imagen"],"value":"0","path":"44-A89-0-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Corrugated","Imagen"],"value":"1","path":"44-A89-1-1.png","load":false,"price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name:\"roof_claddingName\", value: claddingName[MasterValue(\"A89\")] + \" Roofing\"});\n\nvar claddingTexture = claddingTextureMap[MasterValue(\"A89\")];\nvar claddingNormal = claddingNormalMap[MasterValue(\"A89\")];\nroofMaterials.content[0].data.bitmaptexture = claddingTexture;\nroofMaterials.content[0].data.normaltexture = claddingNormal;\nroofMaterials.content[1].data.bitmaptexture = claddingTexture;\nroofMaterials.content[1].data.normaltexture = claddingNormal;\nsdApi.scene.updateAsync(roofMaterials,'CommPlugin_1');","id":"A89","menu":false,"load":false},{"name":["Wall Cladding","Imagen Pequeña - Copia"],"value":"0","showthis":true,"type":"image1","help":["",""],"logo":"44-A90-1.svg","indexlogo":1,"data":[{"indexlogo":1,"name":["5 Rib","Imagen"],"value":"0","path":"44-A90-0-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Corrugated","Imagen"],"value":"1","path":"44-A90-1-1.png","load":false,"price":0,"productcode":"-"},{"indexlogo":1,"name":["Board Batten","Imagen"],"value":"2","path":"46-A90-2-1.jpg","load":false,"price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name:\"wall_claddingName\", value: claddingName[MasterValue(\"A90\")] + \" Cladding\"});\n\nvar claddingTexture = claddingTextureMap[MasterValue(\"A90\")];\nvar claddingNormal = claddingNormalMap[MasterValue(\"A90\")];\nwallMaterials.content[0].data.bitmaptexture = claddingTexture;\nwallMaterials.content[0].data.normaltexture = claddingNormal;\nwallMaterials.content[1].data.bitmaptexture = claddingTexture;\nwallMaterials.content[1].data.normaltexture = claddingNormal;\nsdApi.scene.updateAsync(wallMaterials,'CommPlugin_1');","id":"A90","menu":true,"load":false}],"function":["","//make sure changes were applied\nMasterModify(\"A213\",\"text\",\"Apply\");\nMasterFunction(\"A213\");"],"id":"A84","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false},{"name":["Color Scheme","Sección"],"logo":"44-A91-1.svg","indexlogo":1,"type":"section","showthis":true,"open":false,"data":[{"name":["Single Color Shed?","Switch"],"logo":false,"showthis":true,"indexlogo":0,"help":["",""],"value":false,"name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"type":"switch","prices":{"false":0,"true":0},"function":"if (MasterValue(\"A198\")){\nMasterModify(\"A201\",\"showthis\",true);\nMasterFunction(\"A201\");\nMasterModify(\"A98,A103,A92,A94,A96,A100,A190,A192\",\"showthis\",false);\n}else{\nMasterModify(\"A201\",\"showthis\",false);\nMasterModify(\"A98,A103,A92,A94,A96,A100,A190,A192\",\"showthis\",true);\n}","id":"A198","menu":false},{"name":["Shed Color","Color"],"value":"#e3dac9","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"MasterModify(\"A99,A104,A93,A95,A97,A101,A195,A191,A193\",\"value\",MasterValue(\"A201\"));\nwallMaterials.content[0].data.color = MasterValue(\"A201\");\nwallMaterials.content[1].data.color = MasterValue(\"A201\");\nwallMaterials.content[2].data.color = MasterValue(\"A201\");\nroofMaterials.content[0].data.color = MasterValue(\"A201\");\nroofMaterials.content[1].data.color = MasterValue(\"A201\");\nroofMaterials.content[2].data.color = MasterValue(\"A201\");\nroofMaterials.content[3].data.color = MasterValue(\"A201\");\nroofMaterials.content[4].data.color = MasterValue(\"A201\");\npaDrMaterial.content[0].data.color = MasterValue(\"A201\");\n//paDrMaterial.content[1].data.color = MasterValue(\"A201\");\n//paDrMaterial.content[2].data.color = MasterValue(\"A201\");\nrollerSectDrMaterial.content[0].data.color = MasterValue(\"A201\");\nrollerSectDrMaterial.content[1].data.color = MasterValue(\"A201\");\nrollerSectDrMaterial.content[2].data.color = MasterValue(\"A201\");\nWDMaterial.content[0].data.color = MasterValue(\"A201\");\nslidingMaterial.content[0].data.color = MasterValue(\"A201\");\nsdApi.scene.updateAsync([wallMaterials,roofMaterials,paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1');","id":"A201","menu":true},{"name":["Walls","Sección - Copia"],"logo":"46-A98-3.svg","indexlogo":3,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#A8AAA6","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Doors Flashing Color\", value:MasterValue(\"A99\")});\nupdateBeforeDownload.push({name: \"Walls Color\", value:MasterValue(\"A99\")});\nwallMaterials.content[0].data.color = MasterValue(\"A99\");\nwallMaterials.content[1].data.color = MasterValue(\"A99\");\npaDrMaterial.content[1].data.color = MasterValue(\"A99\");\nrollerSectDrMaterial.content[2].data.color = MasterValue(\"A99\");\nWDMaterial.content[0].data.color = MasterValue(\"A99\");\nslidingMaterial.content[0].data.color = MasterValue(\"A99\");\nsdApi.scene.updateAsync([wallMaterials,paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1');","id":"A99","menu":false}],"function":["",""],"id":"A98","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Corner Flashing","Sección - Copia - Copia - Copia"],"logo":"44-A103-5.svg","indexlogo":5,"type":"section","showthis":true,"open":false,"data":[{"name":["Color","Color"],"value":"#A8AAA6","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Corner Color\", value:MasterValue(\"A104\")});\nwallMaterials.content[2].data.color = MasterValue(\"A104\");\nsdApi.scene.updateAsync(wallMaterials,'CommPlugin_1');","id":"A104","menu":true}],"function":["",""],"id":"A103","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Roof","Sección"],"logo":"44-A92-2.svg","indexlogo":2,"type":"section","showthis":true,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Roof Color\", value:MasterValue(\"A93\")});\nroofMaterials.content[0].data.color = MasterValue(\"A93\");\nroofMaterials.content[1].data.color = MasterValue(\"A93\");\nsdApi.scene.updateAsync(roofMaterials,'CommPlugin_1');","id":"A93","menu":true}],"function":["",""],"id":"A92","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Barge Flashing","Sección - Copia"],"logo":"44-A94-3.svg","indexlogo":3,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Barge Color\", value:MasterValue(\"A95\")});\nroofMaterials.content[2].data.color = MasterValue(\"A95\");\nsdApi.scene.updateAsync(roofMaterials,'CommPlugin_1');","id":"A95","menu":true}],"function":["",""],"id":"A94","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Ridge Flashing","Sección - Copia - Copia"],"logo":"44-A96-5.svg","indexlogo":5,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Ridge Color\", value:MasterValue(\"A97\")});\nroofMaterials.content[3].data.color = MasterValue(\"A97\");\nsdApi.scene.updateAsync(roofMaterials,'CommPlugin_1');","id":"A97","menu":true}],"function":["",""],"id":"A96","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Gutters","Sección - Copia - Copia - Copia"],"logo":"44-A100-5.svg","indexlogo":5,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Gutter Color\", value:MasterValue(\"A101\")});\nroofMaterials.content[4].data.color = MasterValue(\"A101\");\nsdApi.scene.updateAsync(roofMaterials,'CommPlugin_1');","id":"A101","menu":true}],"function":["",""],"id":"A100","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Doors/Windows Flashing","Sección - Copia - Copia - Copia - Copia - Copia - Copia"],"logo":"44-A194-7.svg","indexlogo":7,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"/*\nupdateBeforeDownload.push({name: \"Doors Flashing Color\", value:MasterValue(\"A195\")});\npaDrMaterial.content[2].data.color = MasterValue(\"A195\");\nrollerSectDrMaterial.content[2].data.color = MasterValue(\"A195\");\nWDMaterial.content[0].data.color = MasterValue(\"A195\");\nslidingMaterial.content[0].data.color = MasterValue(\"A195\");\nsdApi.scene.updateAsync([paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1');\n*/","id":"A195","menu":true}],"function":["",""],"id":"A194","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["PA Doors","Sección - Copia - Copia - Copia - Copia"],"logo":"44-A190-6.svg","indexlogo":6,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"PA Doors Color\", value:MasterValue(\"A191\")});\npaDrMaterial.content[0].data.color = MasterValue(\"A191\");\nsdApi.scene.updateAsync(paDrMaterial,'CommPlugin_1');","id":"A191","menu":true}],"function":["",""],"id":"A190","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false},{"name":["Roller/Sectional Doors","Sección - Copia - Copia - Copia - Copia - Copia"],"logo":"44-A192-7.svg","indexlogo":7,"type":"section","showthis":false,"open":false,"data":[{"name":["Color","Color"],"value":"#313436","showthis":true,"help":["",""],"type":"color","logo":false,"indexlogo":0,"data":[{"name":["Bone White","Color"],"value":"#e3dac9","price":0,"productcode":"-"},{"name":["Titania","Color"],"value":"#cac7b9","price":0,"productcode":"-"},{"name":["Cloud","Color"],"value":"#D8D9C8","price":0,"productcode":"-"},{"name":["Smooth Cream","Color"],"value":"#DAC79C","price":0,"productcode":"-"},{"name":["Storm Blue","Color"],"value":"#243442","price":0,"productcode":"-"},{"name":["New Denim Blue","Color"],"value":"#394149","price":0,"productcode":"-"},{"name":["Pacific Blue","Color"],"value":"#374E59","price":0,"productcode":"-"},{"name":["Azure","Color"],"value":"#365C6C","price":0,"productcode":"-"},{"name":["Ebony","Color"],"value":"#181818","price":0,"productcode":"-"},{"name":["Iron Sand","Color"],"value":"#393735","price":0,"productcode":"-"},{"name":["Grey Friars","Color"],"value":"#313436","price":0,"productcode":"-"},{"name":["Sandstone Grey","Color"],"value":"#716F69","price":0,"productcode":"-"},{"name":["Stone","Color"],"value":"#95826C","price":0,"productcode":"-"},{"name":["Gull Grey","Color"],"value":"#A8AAA6","price":0,"productcode":"-"},{"name":["Karaka","Color"],"value":"#2D2D24","price":0,"productcode":"-"},{"name":["Permanent Green","Color"],"value":"#25442F","price":0,"productcode":"-"},{"name":["Rivergum","Color"],"value":"#495947","price":0,"productcode":"-"},{"name":["Lichen","Color"],"value":"#7A7055","price":0,"productcode":"-"},{"name":["Mist Green","Color"],"value":"#667156","price":0,"productcode":"-"},{"name":["Terracotta","Color"],"value":"#8E5037","price":0,"productcode":"-"},{"name":["Scoria","Color"],"value":"#532620","price":0,"productcode":"-"},{"name":["Pioneer Red","Color"],"value":"#642620","price":0,"productcode":"-"},{"name":["Lignite","Color"],"value":"#423429","price":0,"productcode":"-"},{"name":["Desert Sand","Color"],"value":"#edc9af","price":0,"productcode":"-"},{"name":["Zincalume","Color"],"value":"#acadb2","price":0,"productcode":"-"}],"prices":0,"function":"updateBeforeDownload.push({name: \"Roller/Sectional Doors Color\", value:MasterValue(\"A193\")});\nrollerSectDrMaterial.content[0].data.color = MasterValue(\"A193\");\nrollerSectDrMaterial.content[1].data.color = MasterValue(\"A193\");\nsdApi.scene.updateAsync(rollerSectDrMaterial,'CommPlugin_1');","id":"A193","menu":true}],"function":["",""],"id":"A192","location":2,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]},{"index":"10","name":["Color Scheme","Sección"],"type":"section"}],"menu":false,"load":false}],"function":["/*\nMasterModify(\"A190,A192,A194\",\"showthis\",false);\n\nif (doorsWindows[\"doorsWindows\"].length > 0){\n\tMasterModify(\"A194\",\"showthis\",true);\n\tfor (var i =0; i < doorsWindows[\"doorsWindows\"].length; i++){\n\t\tif (doorsWindows[\"doorsWindows\"][i][\"style\"] == \"roller\" || doorsWindows[\"doorsWindows\"][i][\"style\"] == \"sectional\") {\n\t\t\tMasterModify(\"A192\",\"showthis\",true);\n\t\t}\n\t\tif (doorsWindows[\"doorsWindows\"][i][\"style\"] == \"steelPA\" || doorsWindows[\"doorsWindows\"][i][\"style\"] == \"zincPA\" || doorsWindows[\"doorsWindows\"][i][\"style\"] == \"alumPA\") {\n\t\t\tMasterModify(\"A190\",\"showthis\",true);\n\t\t}\n\t}\n}\n*/",""],"id":"A91","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false},{"name":["View Options","Desplegable"],"logo":"46-A235-1.svg","indexlogo":1,"showthis":true,"type":"dropdown","open":false,"data":[{"name":["Show Dimensions?","Switch"],"logo":false,"showthis":true,"indexlogo":0,"help":["",""],"value":true,"name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"type":"switch","prices":{"false":0,"true":0},"function":"if (MasterValue(\"A236\"))\n{\nsdApi.scene.toggleGeometry([dimensionsScenePath], []);\n}\nelse\n{\nsdApi.scene.toggleGeometry([], [dimensionsScenePath]);\n}","id":"A236","menu":false},{"name":["Show Roof?","Switch"],"logo":false,"showthis":true,"indexlogo":0,"help":["",""],"value":true,"name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"type":"switch","prices":{"false":0,"true":0},"function":"if (MasterValue(\"A237\"))\n{\nsdApi.scene.toggleGeometry([roofScenePath,roofStructScenePath,wallScenePath + \".content_0\"], []);\n}\nelse\n{\nsdApi.scene.toggleGeometry([], [roofScenePath,roofStructScenePath,wallScenePath + \".content_0\"]);\n}\nMasterFunction(\"A240\");","id":"A237","menu":false},{"name":["Show Cladding?","Switch - Copia"],"logo":false,"showthis":true,"indexlogo":0,"help":["",""],"value":true,"name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"type":"switch","prices":{"false":0,"true":0},"function":"if (MasterValue(\"A240\"))\n{\nif (MasterValue(\"A237\")){sdApi.scene.toggleGeometry([roofScenePath],[])}\nelse{sdApi.scene.toggleGeometry([],[roofScenePath])}\nsdApi.scene.toggleGeometry([wallScenePath], []);\n}\nelse\n{\nsdApi.scene.toggleGeometry([], [roofScenePath,wallScenePath]);\n}","id":"A240","menu":false},{"name":["Show Detailed View?","Switch - Copia"],"logo":false,"showthis":true,"indexlogo":0,"help":["",""],"value":false,"name_data":{"true":["Yes","Si"],"false":["No","No"]},"code":{"false":"-","true":"-"},"type":"switch","prices":{"false":0,"true":0},"function":"sdApi.parameters.updateAsync({name:\"Detailed View\",value:MasterValue(\"A238\")});\nif (MasterValue(\"A238\")) {\n sdApi.scene.toggleGeometry([environmentScenePath], []);\n //setting scene settings\n sdApi.updateSettingsAsync(\n {\n scene: {\n gridVisibility: false,\n material: {\n environmentMapAsBackground: true\n },\n render: {\n ambientOcclusion: true,\n shadows: true\n }\n }\n }\n )\n\n //setting scene lighting\n sdApi.scene.lights.updateLight({\n id: \"ambient0\",\n type: \"ambient\",\n properties: {\n color: 16777215,\n intensity: 0.5\n }\n});\n\nsdApi.scene.lights.updateLight({\n id: \"directional0\",\n type: \"directional\",\n properties: {\n castShadow: true,\n color: 16777215,\n direction: { x: 0.5774, y: -0.5774, z: 0.5774 },\n intensity: 0.75\n }\n});\n\nsdApi.scene.lights.updateLight({\n id: \"directional1\",\n type: \"directional\",\n properties: {\n castShadow: false,\n color: 16777215,\n direction: { x: -0.25, y: -1, z: 1 },\n intensity: 0.35\n }\n});\n}\nelse {\n sdApi.scene.toggleGeometry([], [environmentScenePath]);\n\n //setting scene settings\n sdApi.updateSettingsAsync(\n {\n scene: {\n gridVisibility: true,\n material: {\n environmentMapAsBackground: false\n },\n render: {\n ambientOcclusion: false,\n shadows: false\n }\n }\n }\n );\n //setting lighting\n sdApi.scene.lights.updateLight({\n id: \"ambient0\",\n type: \"ambient\",\n properties: {\n color: 16777215,\n intensity: 1.2\n }\n});\n\nsdApi.scene.lights.updateLight({\n id: \"directional0\",\n type: \"directional\",\n properties: {\n castShadow: true,\n color: 16777215,\n direction: { x: 0.5774, y: -0.5774, z: 0.5774 },\n intensity: 0\n }\n});\n\nsdApi.scene.lights.updateLight({\n id: \"directional1\",\n type: \"directional\",\n properties: {\n castShadow: false,\n color: 16777215,\n direction: { x: -0.25, y: -1, z: 1 },\n intensity: 0\n }\n});\n}","id":"A238","menu":true},{"name":["Open Doors (%)","Deslizador"],"value":0,"logo":"46-A239-1.svg","indexlogo":1,"showthis":true,"code":"-","step":30,"type":"slider","help":["",""],"min":0,"max":90,"prices":0,"function":"sdApi.parameters.updateAsync({name:\"Open Door\", value:MasterValue(\"A239\")});","id":"A239","menu":false,"load":false}],"function":["",""],"id":"A235","location":1,"subsections":[{"type":"main","index":0,"name":["Main Menu","Menú Principal"]}],"menu":false,"load":false},{"name":["Download Drawings","Botón"],"help":["",""],"logo":false,"showthis":false,"indexlogo":0,"type":"button","text":["Process","Botón"],"function":"var downloadDrawing = function(){\n sdApi.exports.requestAsync({name: drawingNames[downloadCount], silent: true}).then(function(res){\n drawingURL = res.data.content[0].href;\n MasterModify(\"A242\",\"text\",res.data.filename);\n MasterApply();\n downloadCount++;\n });\n };\n\nif (MasterValue(\"A242\",\"text\")[0] == \"Process\"){\n MasterModify(\"A242\",\"text\",\"Processing...\");\n downloadCount = 0;\n //Process 2D Drawings\n sdApi.parameters.updateAsync(updateBeforeDownload.concat({name: \"Compute Drawings\", value: true })).then(function () {\nupdateBeforeDownload = [];\n downloadDrawing ();\n });\n} else if (MasterValue(\"A242\",\"text\")[0] != \"Processing...\"){\nwindow.open(drawingURL, '_blank');\nif (downloadCount < drawingNames.length){\nMasterModify(\"A242\",\"text\",\"Processing...\");\ndownloadDrawing();\n } else {\n sdApi.parameters.updateAsync({ name: \"Compute Drawings\", value: false });\n MasterModify(\"A242\",\"text\",\"Process\");\n }\n}","id":"A242","menu":false}],"location":0};var sdApiParameters = itemsmenu.sdApiParameters; var params=SearchP();function ScreenshootShapeDiver(){ ScreenshotShapeDiver = false; ExportNewlineFiles = []; ExportShapeDiver = true; //hide pre-existing summary results for (var i = 248; i < 1000; i++) { if(MasterValue("A" + i) == undefined) break; if (MasterValue("A" + i, "showthis") == "summary") { MasterModify("A" + i, "showthis", false); } } for (i = 0; i < drsWdsJSON.DrsWds.length; i++) { MasterModify("A248", "showthis", "summary"); MasterModify("A248", "name", optionsNames[optionsValues.indexOf(drsWdsJSON.DrsWds[i].style)]); MasterModify("A248", "value", drsWdsJSON.DrsWds[i].width + "m W x " + drsWdsJSON.DrsWds[i].height + "m H"); MasterModify("A248", "duplicate"); if (i + 1 == drsWdsJSON.DrsWds.length) MasterModify("A248", "showthis", false); } //Process 2D Drawings sdApi.parameters.updateAsync(updateBeforeDownload.concat({name: "Compute Drawings", value: true })).then(function () { updateBeforeDownload = []; ExportNewlineFiles = drawingNames; setTimeout(function () { sdApi.parameters.updateAsync({ name: "Compute Drawings", value: false }); }, 30000); });};var viewerSpeed = 1500; var typingTimer; var explainCustomBaySize = true; var showBayInputs = true; var cameraPositioned = false; var orthographic = false; var hideRoof = false; var addRemoveIcons = [ "https://i.imgur.com/H05tbwl.png", "https://i.imgur.com/jjRIqtf.png" ]; var claddingName = [ "Coloursteel Trimdek", "Coloursteel Corrugated", "Board Batten" ]; var claddingTextureMap = [ "https://i.imgur.com/XF3Az78.jpg", "https://i.imgur.com/XF3Az78.jpg", "https://i.imgur.com/eDbwI85.jpg" ]; var claddingNormalMap = [ "https://i.imgur.com/Ur9oKzz.jpg", "https://i.imgur.com/axmWinG.jpg", "https://i.imgur.com/raTRUN7.jpg" ]; var editIcon = "https://i.imgur.com/KH2RKdw.png"; var moveIcon = "https://i.imgur.com/jiGc7eC.png"; //var removeIcon = "https://i.imgur.com/Uyv5rcZ.png"; var anchorsContent = []; var allImagesIcons = []; var dimensionsScenePath; var roofScenePath; var roofStructScenePath; var roofMaterials; var wallScenePath; var wallMaterials; var environmentScenePath; var currentBayCount = MasterValue("A11"); var centrePoles = []; var skylights = []; //walls variables var divisionWalls = []; var divisionWallsJSON; var frontWalls = []; var backWalls = []; var sideWallsJSON; var currentWall; //windows and doors variables var editDrWdMessage = false; var drWdDimScenePath; var drWdWallLocAnchors; var drsWdsJSON; var currentID; var drsWdsAnchors; var storeDrWdJSON; var storeDrWdOpt; var editionMode = false; var rollerSectDrMaterial; var rollerSectDrScenePath; var paDrMaterial; var paDrScenePath; var WDMaterial; var WDScenePath; var slidingMaterial; var slidingScenePath; var optionsValues = ["roller", "sectional", "steelPA", "zincPA", "alumPA", "WD", "sliding", "barn"]; var optionsNames = ["Roller Door", "Sectional Door", "Coloursteel PA Door", "Zincalume PA Door", "Aluminium PA Door", "Window", "Ranch Slider", "Barn Door"]; //wings variables var frontWings = []; var frontWingDepth = 0; var backWings = []; var backWingDepth = 0; var MaxSizeWings = []; var MaxHeightWings = []; var storedWingOpt = 0; var updateBeforeDownload = []; var drawingNames = ["downloadFloorPlan","downloadFloorPlan", "downloadSideElevations", "downloadEndElevations"]; var drawingURL; var downloadCount = 0; //refocus dom elements var refocusDomElem = function() { //sdApi.updateSettingAsync('scene.camera.cameraTypes.active', 0.1).then(function(){ //sdApi.updateSettingAsync('scene.camera.cameraTypes.active', 1); //}); sdApi.scene.render(); }; var checkWings = function() { MaxSizeWings = sdApi.scene.getData({name:"MaxSizeWings"}).data[0].data; MaxHeightWings = sdApi.scene.getData({name:"MaxHeightWings"}).data[0].data; if (MaxSizeWings[0] >= MasterValue("A208","min")){ //check if geometry max size is over allowed max if (MaxSizeWings[0] > 12) { MasterModify("A208","max",12); } else { MasterModify("A208","max",MaxSizeWings[0]); } //check if current value is over max allowed if (MasterValue("A208") > MasterValue("A208","max")){ MasterModify("A208","value",MasterValue("A208","max")); sdApi.parameters.updateAsync({name:"Front Wing Size", value:MasterValue("A208")}).then(function() { checkWings(); }); } MasterModify("A209","max",MaxHeightWings[0]); if (MasterValue("A209") > MasterValue("A209","max")){ MasterModify("A209","value",MasterValue("A209","max")); sdApi.parameters.updateAsync({name:"Front Wing Height", value:MasterValue("A209")}); } } if (MaxSizeWings[1] >= MasterValue("A210","min")){ //check if geometry max is over allowed max if (MaxSizeWings[1] > 12) { MasterModify("A210","max",12); } else { MasterModify("A210","max",MaxSizeWings[1]); } //check if current value is over max allowed if (MasterValue("A210") > MasterValue("A210","max")){ MasterModify("A210","value",MasterValue("A210","max")); sdApi.parameters.updateAsync({name:"Back Wing Size", value:MasterValue("A210")}).then(function() { checkWings(); }); } MasterModify("A211","max",MaxHeightWings[1]); if (MasterValue("A211") > MasterValue("A211","max")){ MasterModify("A211","value",MasterValue("A211","max")); sdApi.parameters.updateAsync({name:"Back Wing Height", value:MasterValue("A211")}); } } if (MaxSizeWings[0] < MasterValue("A208","min") && MaxSizeWings[1] < MasterValue("A210","min") && (MasterValue("A206") == 5 || MasterValue("A206") == 3)){ MasterModify("A206","value",0); MasterFunction("A206"); MasterModify("A206","value",0); AlertMessage("Wings Deleted","Wings were deleted because eave height is too low."); } else if (MaxSizeWings[0] < MasterValue("A208","min") && (MasterValue("A206") == 5 || MasterValue("A206") == 3 || MasterValue("A206") == 1)){ if (MasterValue("A206") == 5) { frontWings = []; sdApi.parameters.updateAsync({name:"frontWings", value:JSON.stringify(frontWings)}); } else if (MasterValue("A206") == 3) { MasterModify("A206","value",2); MasterFunction("A206"); } else if (MasterValue("A206") == 1) { MasterModify("A206","value",0); MasterFunction("A206"); } AlertMessage("Front Wing Deleted","Front wing was deleted because eave height is too low."); } else if (MaxSizeWings[1] < MasterValue("A210","min") && (MasterValue("A206") == 5 || MasterValue("A206") == 3 || MasterValue("A206") == 2)){ if (MasterValue("A206") == 5) { backWings = []; sdApi.parameters.updateAsync({name:"backWings", value:JSON.stringify(backWings)}); } else if (MasterValue("A206") == 3){ MasterModify("A206","value",1); MasterFunction("A206"); } else if (MasterValue("A206") == 2){ MasterModify("A206","value",0); MasterFunction("A206"); } AlertMessage("Back Wing Deleted","Back wing was deleted because eave height is too low."); } }; var updateWalls = function() { //show or hide Type of Overhang option if(MasterValue("A3") == 0 && MasterValue("A4") > 0 && frontWings.length == 0){ MasterModify("A5","showthis", true); }else{ MasterModify("A5","showthis", false); }; //move last wall to the end bay if (MasterValue("A214") == 1) { MasterFunction("A214"); }else{ divisionWallsJSON = sdApi.scene.getData({name:"divisionWallsJSON"}).data[0].data; sdApi.parameters.updateAsync({name:"divisionWallsJSON", value:JSON.stringify(divisionWallsJSON)}).then(function() { sdApi.scene.resume(); }); divisionWalls = []; for (var i = 0; i < divisionWallsJSON.divisionWalls.length; ++i) { for (var j = 0; j < divisionWallsJSON.divisionWalls[i].show.length; ++j) { if (divisionWallsJSON.divisionWalls[i].show[j]){ divisionWalls.push("axis_" + divisionWallsJSON.divisionWalls[i].axis + "_" + j); } } } } }; var newDropdownName = function (optName) { if (optName.length > 20) { return optName.substring(0, 20) + '...'; } else { return optName; } }; var updateWdDrOptions = function () { //make sure the latest version of JSON has been loaded; drsWdsAnchors = sdApi.scene.getData({ name: "drsWdsAnchors" }).data[0].data; for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { drsWdsJSON.DrsWds[i].dimensions = false; if (drsWdsJSON.DrsWds[i].ID == currentID) { //show windows/doors dimensions drsWdsJSON.DrsWds[i].dimensions = true; sdApi.scene.toggleGeometry([drWdDimScenePath],[]); //update door window option MasterModify("A224", "value",drsWdsJSON.DrsWds[i].style); //show and close dropdown MasterModify("A223", "open", false); MasterModify("A223,A233", "showthis", true); MasterModify("A233", "name", newDropdownName("Remove " + MasterValue("A224", "nameoption"))); //show width slider if (drsWdsAnchors[i].widthLimits[0] != drsWdsAnchors[i].widthLimits[1]) { MasterModify("A226", "name", MasterValue("A224", "nameoption") + " Width"); MasterModify("A226", "showthis", true); MasterModify("A226", "min", drsWdsAnchors[i].widthLimits[0]); MasterModify("A226", "max", drsWdsAnchors[i].widthLimits[1]); MasterModify("A226", "value", drsWdsJSON.DrsWds[i].width); } else { MasterModify("A226", "showthis", false); } //show height slider if (drsWdsAnchors[i].heightLimits[0] != drsWdsAnchors[i].heightLimits[1]) { MasterModify("A227", "name", MasterValue("A224", "nameoption") + " Height"); MasterModify("A227", "showthis", true); MasterModify("A227", "min", drsWdsAnchors[i].heightLimits[0]); MasterModify("A227", "max", drsWdsAnchors[i].heightLimits[1]); MasterModify("A227", "value", drsWdsJSON.DrsWds[i].height); } else { MasterModify("A227", "showthis", false); } //Show Location X if (drsWdsAnchors[i].locXLimits[0] != drsWdsAnchors[i].locXLimits[1]) { MasterModify("A228", "name", MasterValue("A224", "nameoption") + " Location"); MasterModify("A228", "showthis", true); } else { MasterModify("A228", "showthis", false); } //check min max x position MasterModify("A228", "min", drsWdsAnchors[i].locXLimits[0]); MasterModify("A228", "max", drsWdsAnchors[i].locXLimits[1]); if (drsWdsJSON.DrsWds[i].loc[0] < MasterValue("A228", "min")) { drsWdsJSON.DrsWds[i].loc[0] = MasterValue("A228", "min"); } else if (drsWdsJSON.DrsWds[i].loc[0] > MasterValue("A228", "max")) { drsWdsJSON.DrsWds[i].loc[0] = MasterValue("A228", "max"); } MasterModify("A228", "value", drsWdsJSON.DrsWds[i].loc[0]); MasterModify("A223", "name", newDropdownName("Repositioning " + MasterValue("A224", "nameoption"))); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { sdApi.scene.resume(); MasterModify("A223", "name", newDropdownName("Change " + MasterValue("A224", "nameoption"))); MasterApply(); }); //Show Location Z if (MasterValue("A224") == "WD" && drsWdsAnchors[i].locZLimits[0] != drsWdsAnchors[i].locZLimits[1]) { MasterModify("A229", "showthis", true); MasterModify("A229", "min", drsWdsAnchors[i].locZLimits[0]); MasterModify("A229", "max", drsWdsAnchors[i].locZLimits[1]); MasterModify("A229", "value", drsWdsJSON.DrsWds[i].loc[1]); } else { MasterModify("A229", "showthis", false); } MasterApply(); } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ); } }; //Create Anchor Assets for door windows edition of current wall var drWdEditionAnchors = function() { //make sure the latest version of JSON has been loaded; drsWdsAnchors = sdApi.scene.getData({ name: "drsWdsAnchors" }).data; if(drsWdsAnchors.length == 0) return; drsWdsAnchors = drsWdsAnchors[0].data; //Clean anchor Content anchorsContent = []; for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].wall == currentWall && drsWdsJSON.DrsWds[i].ID != currentID) { var anchor = { version: "1.0", location: drsWdsAnchors[i].loc, format: "image", data: { src: editIcon, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: drsWdsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } } var finalContent; if (anchorsContent.length > 0) { finalContent = [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] } else { finalContent = []; } //Create Anchor Assets sdApi.scene.updateAsync( { id: "anchors", content: finalContent }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is edit icon option if (allImages[i].src == editIcon) { //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { editionMode = true; currentID = elem.target.getAttribute("alt"); updateWdDrOptions(); drWdEditionAnchors(); } } if (i == allImages.length - 1) { clearInterval(waitImages); } } }, 0); }); }; function MasterOpenSection(id, index) {angular.element($("#GeneralJS")).scope().ShowMenus(id, index, null, false)} function MasterApply() {angular.element($("#GeneralJS")).scope().$apply()} function AlertMessage(t,c){angular.element($("#GeneralJS")).scope().HelpText("",t,c,"ok")} function MasterSectionId(a,b) {return angular.element($("#GeneralJS")).scope().MasterSectionId(a,b);} function MasterModify(e,n,a,zz){var r=e.indexOf(",")>=0?e.split(","):[e];for(var i in r)angular.element($("#GeneralJS")).scope().MasterModifyLoop(r[i],n,a,zz);return!0}function MasterView(e){angular.element($("#GeneralJS")).scope().ChangeView(e)} function MasterFunctionLoop(id,source) {const MasterId = id; switch (id) { case "A197": sdApi.parameters.updateAsync({name:"Side Overhangs", value:MasterValue("A197")}); break; case "A3": sdApi.parameters.updateAsync({name:"Roof Type", value:MasterValue("A3")}).then(function() { checkWings(); if(MasterValue("A3") == 0 && MasterValue("A4") > 0 && frontWings.length == 0){ MasterModify("A5","showthis", true); }else{ MasterModify("A5","showthis", false); }; }); break; case "A4": sdApi.parameters.updateAsync({name:"Front Overhang", value:MasterValue("A4")}).then(function() { MasterFunction("A3"); }); break; case "A6": sdApi.parameters.updateAsync({name:"Back Overhang", value:MasterValue("A6")}); break; case "A5": sdApi.parameters.updateAsync({name:"Type of Overhang", value:MasterValue("A5")}); break; case "A8_IN": //show general dimensions sdApi.scene.toggleGeometry([dimensionsScenePath], []); //setting camera to top view MasterView("backward"); //waiting camera to be in top view setTimeout(function () { //update lights sdApi.scene.lights.updateLight({ id: "ambient0", type: "ambient", properties: { color: 16777215, intensity: 1.2 } }); sdApi.scene.lights.updateLight({ id: "directional0", type: "directional", properties: { castShadow: true, color: 16777215, direction: { x: 0.5774, y: -0.5774, z: 0.5774 }, intensity: 0 } }); sdApi.scene.lights.updateLight({ id: "directional1", type: "directional", properties: { castShadow: false, color: 16777215, direction: { x: -0.25, y: -1, z: 1 }, intensity: 0 } }); //setting top view scene settings sdApi.updateSettingsAsync( { scene: { gridVisibility: true, material: { environmentMapAsBackground: false }, camera: { controls: { orbit: { enableRotation: false, enableZoom: false } }, cameraTypes: { active: 1 } }, render: { ambientOcclusion: false, shadows: false } } } ).then(function () { //adding bay size inputs if (showBayInputs){ MasterFunction("A241"); showBayInputs = true; } //calling top view immediately/duration = 0 and having into account field of view for orthographic views orthographic = true; hideRoof = true; viewerSpeed = 0; MasterView("backward"); viewerSpeed = 1500; }); }, viewerSpeed + 100); break; case "A8_OUT": //setting normal camera settings sdApi.updateSettingsAsync( { scene: { camera: { controls: { orbit: { enableRotation: true, enableZoom: true } }, cameraTypes: { active: 0 } } } } ).then(function () { if (MasterValue("A241") == 1) { var bayAnchors = []; //converting inputs into just text var baySizeAnchors = sdApi.scene.getData({ name: "baySizeAnchors" }).data[0].data; for (var i = 0; i < baySizeAnchors.length; ++i) { var anchor = { version: "1.0", location: baySizeAnchors[i].loc, color: [255, 255, 255, 255], text: baySizeAnchors[i].size.toFixed(1) }; bayAnchors.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "bayAnchors", content: [ { format: sdApi.scene.FORMAT.TAG2D, data: bayAnchors } ] }); } orthographic = false; hideRoof = false; //calling perspective view MasterView("backward_right_down"); }); MasterFunction("A236,A237,A238"); break; case "A9": sdApi.parameters.updateAsync({name:"Shed Depth", value:MasterValue("A9")}).then(function() { MasterFunction("A8_IN"); }); break; case "A11": //extend wings if (MasterValue("A206") == 1){ frontWings = Array.from({length: MasterValue("A11")}, (v, k) => k+1); } else if (MasterValue("A206") == 2) { backWings = Array.from({length: MasterValue("A11")}, (v, k) => k+1); } else if (MasterValue("A206") == 3) { frontWings = Array.from({length: MasterValue("A11")}, (v, k) => k+1); backWings = Array.from({length: MasterValue("A11")}, (v, k) => k+1); } //add centre poles if (MasterValue("A204") == 1) { centrePoles = Array.from({length: MasterValue("A11") + 1}, (v, k) => k+1); } //add skylights if (MasterValue("A212") == 1) { skylights = Array.from({length: MasterValue("A11")}, (v, k) => k+1); } var baySizes = JSON.parse(sdApi.parameters.get({name:"baySizes"}).data[0].value); if (baySizes.length > MasterValue("A11")) baySizes.length = MasterValue("A11"); else baySizes = baySizes.concat(Array(MasterValue("A11") - baySizes.length).fill(baySizes[baySizes.length - 1])); sdApi.scene.pause(); sdApi.parameters.updateAsync( [ {name:"baySizes", value:JSON.stringify(baySizes)}, {name:"frontWings", value:JSON.stringify(frontWings)}, {name:"backWings", value:JSON.stringify(backWings)}, {name:"centrePoles", value:JSON.stringify(centrePoles)}, {name:"skylights", value:JSON.stringify(skylights)} ] ).then(function() { currentBayCount = MasterValue("A11"); //move last wall to the end bay if (MasterValue("A214") == 1) { MasterFunction("A214"); }else{ sdApi.scene.resume(); } MasterView("backward"); MasterFunction("A241"); }); MasterFunction("A9"); break; case "A241": var bayAnchors = []; if (MasterValue("A241") == 0) { MasterModify("A10", "showthis", true); sdApi.parameters.updateAsync( { name: "baySizes", value: JSON.stringify(Array(MasterValue("A11")).fill(MasterValue("A10"))) } ).then(function () { MasterView("backward"); var baySizeAnchors = sdApi.scene.getData({ name: "baySizeAnchors" }).data[0].data; for (var i = 0; i < baySizeAnchors.length; ++i) { var anchor = { version: "1.0", location: baySizeAnchors[i].loc, color: [255, 255, 255, 255], text: baySizeAnchors[i].size.toFixed(1) }; bayAnchors.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "bayAnchors", content: [ { format: sdApi.scene.FORMAT.TAG2D, data: bayAnchors } ] }); setTimeout(function () { sdApi.scene.render(); }, 100); }); } else { MasterModify("A10", "showthis", false); if (explainCustomBaySize) { AlertMessage("Input Bay Sizes in 3D model", "Custom bay sizes can be eddited in the 3D view of the model by changing the respective dimension."); explainCustomBaySize = false; } var baySizeAnchors = sdApi.scene.getData({ name: "baySizeAnchors" }).data[0].data; for (var i = 0; i < baySizeAnchors.length; ++i) { var anchor = { version: "1.0", location: baySizeAnchors[i].loc, format: "image", data: { src: "", positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: String(baySizeAnchors[i].bayNum), hidden: false } }; bayAnchors.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "bayAnchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: bayAnchors } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByClassName('shapediver-domElements')[0].getElementsByTagName('IMG'); if (allImages.length == baySizeAnchors.length) { clearInterval(waitImages); for (var i = 0; i < allImages.length; ++i) { var newInput = document.createElement("INPUT"); newInput.setAttribute("type", "number"); newInput.setAttribute("id", allImages[i].alt); newInput.setAttribute("value", baySizeAnchors[allImages[i].alt].size); newInput.style.pointerEvents = "auto"; newInput.style.width = "40px"; newInput.style.textAlign = "center"; //insert input element allImages[i].after(newInput); allImages[i].remove(); i--; //when finished typing newInput.addEventListener("keyup", function (elem) { clearTimeout(typingTimer); typingTimer = setTimeout(function () { var baySizes = JSON.parse(sdApi.parameters.get({ name: "baySizes" }).data[0].value); if (elem.target.value < MasterValue("A10", "min")) elem.target.value = MasterValue("A10", "min"); else if (elem.target.value > MasterValue("A10", "max")) elem.target.value = MasterValue("A10", "max"); baySizes[elem.target.id] = elem.target.value; sdApi.parameters.updateAsync({ name: "baySizes", value: JSON.stringify(baySizes) }).then(function () { MasterView("backward"); MasterFunction("A241"); }); }, 1000); }); newInput.addEventListener("keydown", function () { clearTimeout(typingTimer); }); } setTimeout(function () { sdApi.scene.render(); }, 100); } }, 0); }); } break; case "A10": sdApi.parameters.updateAsync( {name:"baySizes", value:JSON.stringify(Array(MasterValue("A11")).fill(MasterValue("A10")))} ).then(function() { MasterFunction("A241"); }); MasterFunction("A9"); break; case "A12": var baySizeAnchors = sdApi.scene.getData({ name: "baySizeAnchors" }).data[0].data; var totalLength = 0; for (var i = 0; i < baySizeAnchors.length; ++i) { totalLength += baySizeAnchors[i].size; } return (totalLength.toFixed(2)); break; case "A13": //setting perspective camera sdApi.updateSettingsAsync( { scene: { camera: { cameraTypes: { active: 0 } } } } ).then(function() { MasterView("left"); sdApi.parameters.updateAsync({name:"Eave Height", value:MasterValue("A13")}).then(function() { checkWings(); }); }); break; case "A32": var ridgeHeight; if (MasterValue("A3") == 0){ ridgeHeight = (((Math.tan(MasterValue("A14")*(Math.PI/180)))*MasterValue("A9"))+MasterValue("A13")).toFixed(1); } else{ ridgeHeight = ((((Math.tan(MasterValue("A14")*(Math.PI/180)))*MasterValue("A9"))/2)+MasterValue("A13")).toFixed(1); } return (ridgeHeight); break; case "A14": //setting perspective camera sdApi.updateSettingsAsync( { scene: { camera: { cameraTypes: { active: 0 } } } } ).then(function() { MasterView("left"); sdApi.parameters.updateAsync({name:"Roof Pitch", value:MasterValue("A14")}).then(function() { checkWings(); }); }); break; case "A15_IN": showBayInputs = false; MasterFunction('A8_IN'); break; case "A15_OUT": //make sure changes were applied MasterModify("A215,A218","text","Apply"); MasterFunction("A215,A218"); //hide apply button and move slider MasterModify("A220", "showthis", false); //show move button MasterModify("A221", "showthis", true); //change name of move slider MasterModify("A220", "name", "Select Wall to Move"); currentWall = ""; MasterFunction('A8_OUT'); break; case "A214": //hide apply button and move slider MasterModify("A220", "showthis", false); //show move button MasterModify("A221", "showthis", true); //change name of move slider MasterModify("A220", "name", "Select Wall to Move"); currentWall = ""; var endDivisionWallsJSON; var checkDivWalls; var initPrep = function () { //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); //hide custom selected poles MasterModify("A214", "hideoption", true, 3); //show custom option MasterModify("A214", "hideoption", false, 2); //hide apply button MasterModify("A215", "showthis", false); endDivisionWallsJSON = sdApi.scene.getData({ name: "endDivisionWallsJSON" }).data[0].data; checkDivWalls = endDivisionWallsJSON.divisionWalls; divisionWalls = []; }; if (MasterValue("A214") == 0) { initPrep(); for (var i = 0; i < checkDivWalls.length; ++i) { for (var j = 0; j < checkDivWalls[i].show.length; ++j) { if (checkDivWalls[i].show[j]) { endDivisionWallsJSON.divisionWalls[i].show[j] = false; } } } divisionWallsJSON = {divisionWalls: []}; sdApi.parameters.updateAsync({ name: "divisionWallsJSON", value: JSON.stringify(divisionWallsJSON)}).then(function () { //update sideWallsJSON frontWalls = []; backWalls = []; sideWallsJSON = sdApi.scene.getData({ name: "sideWallsJSON" }).data[0].data; for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { if (sideWallsJSON.frontWalls.show[i]) { frontWalls.push(i); } } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { if (sideWallsJSON.backWalls.show[i]) { backWalls.push(i); } } }); } else if (MasterValue("A214") == 1) { initPrep(); for (var i = 0; i < checkDivWalls.length; ++i) { for (var j = 0; j < checkDivWalls[i].show.length; ++j) { if (checkDivWalls[i].show[j]) { divisionWalls.push("axis_" + checkDivWalls[i].axis + "_" + j); } } } divisionWallsJSON = endDivisionWallsJSON; sdApi.parameters.updateAsync({ name: "divisionWallsJSON", value: JSON.stringify(endDivisionWallsJSON) }).then(function () { sdApi.scene.resume(); //update sideWallsJSON frontWalls = []; backWalls = []; sideWallsJSON = sdApi.scene.getData({ name: "sideWallsJSON" }).data[0].data; for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { if (sideWallsJSON.frontWalls.show[i]) { frontWalls.push(i); } } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { if (sideWallsJSON.backWalls.show[i]) { backWalls.push(i); } } }); } else if (MasterValue("A214") == 2 || MasterValue("A214") == 3) { AlertMessage("Use the Icons", "Add and remove division walls by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished."); //show apply button MasterModify("A215", "showthis", true); MasterModify("A215", "name", "Apply Changes to Custom Division Walls"); MasterModify("A215", "text", "Apply"); var divisionWallsAnchors = sdApi.scene.getData({ name: "divisionWallsAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; for (var i = 0; i < divisionWallsAnchors.length; ++i) { var imageURL = addRemoveIcons[0]; if (divisionWalls.includes(divisionWallsAnchors[i].alt)) { imageURL = addRemoveIcons[1]; } var anchor = { version: "1.0", location: divisionWallsAnchors[i].loc, format: "image", data: { src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: divisionWallsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) { //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { var thisAlt = elem.target.getAttribute("alt").split("_"); var sectCount = sdApi.scene.getData({ name: "divisionWallsSectCount" }).data[0].data[thisAlt[1] - 1] for (var j = 0; j < divisionWallsJSON.divisionWalls.length; ++j) { if (divisionWallsJSON.divisionWalls[j].axis == thisAlt[1]) { if (elem.target.getAttribute("src") == addRemoveIcons[0]) { //change icon to "remove" icon elem.target.src = addRemoveIcons[1]; //add this wall to the divisionWalls array divisionWalls.push(elem.target.getAttribute("alt")); //change the JSON show section to true divisionWallsJSON.divisionWalls[j].show[thisAlt[2]] = true; } else { //change icon to "add" icon elem.target.src = addRemoveIcons[0]; //remove this wall from the divisionWalls array var index = divisionWalls.indexOf(elem.target.getAttribute("alt")); divisionWalls.splice(index, 1); //remove this object from JSON if it has a single section if (sectCount == 1) { divisionWallsJSON.divisionWalls.splice(j, 1); //otherwise just change the JSON show section to false } else { divisionWallsJSON.divisionWalls[j].show[thisAlt[2]] = false; } } break; } else if (j == divisionWallsJSON.divisionWalls.length - 1) { var showArray = Array.from({ length: sectCount }, i => false); showArray[thisAlt[2]] = true; divisionWallsJSON.divisionWalls.push({ axis: thisAlt[1], show: showArray }) } } var wallAxes = []; for (var j = 0; j < divisionWallsJSON.divisionWalls.length; ++j) { wallAxes.push(Number(divisionWallsJSON.divisionWalls[j].axis)); } wallAxes.sort(); //show custom selected division walls if (wallAxes.length > 0) { MasterModify("A214", "nameoption", "Axes " + wallAxes.join(), 3); MasterModify("A214", "value", 3); MasterModify("A214", "hideoption", false, 3); MasterModify("A214", "hideoption", true, 2); } else { MasterModify("A214", "value", 2); MasterModify("A214", "hideoption", false, 2); MasterModify("A214", "hideoption", true, 3); } MasterApply(); } } if (i == allImages.length - 1) { clearInterval(waitImages); refocusDomElem(); } } }, 250); }); }; break; case "A215": if (MasterValue("A215", "text")[0] == "Apply") { MasterModify("A215", "text", "Loading..."); sdApi.parameters.updateAsync({ name: "divisionWallsJSON", value: JSON.stringify(divisionWallsJSON)}).then(function () { //update sideWallsJSON frontWalls = []; backWalls = []; sideWallsJSON = sdApi.scene.getData({ name: "sideWallsJSON" }).data[0].data; for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { if (sideWallsJSON.frontWalls.show[i]) { frontWalls.push(i); } } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { if (sideWallsJSON.backWalls.show[i]) { backWalls.push(i); } } if (divisionWalls.length == 0) { MasterModify("A214", "value", 0); MasterModify("A214", "hideoption", false, 2); MasterModify("A214", "hideoption", true, 3); MasterModify("A215", "showthis", false); } else { MasterModify("A215", "name", "Edit Custom Division Walls"); MasterModify("A215", "text", "Edit"); } MasterApply(); //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); }); } else if (MasterValue("A215", "text")[0] == "Edit") { MasterModify("A215", "text", "Loading..."); MasterModify("A218", "text", "Edit"); sdApi.parameters.updateAsync([{name:"divisionWallsJSON", value:JSON.stringify(divisionWallsJSON)},{ name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON)}]).then(function () { MasterFunction("A214"); MasterModify("A215", "name", "Apply Changes to Custom Division Walls"); MasterModify("A215", "text", "Apply"); }); } break; case "A216": //hide apply button and move slider MasterModify("A220", "showthis", false); //show move button MasterModify("A221", "showthis", true); //change name of move slider MasterModify("A220", "name", "Select Wall to Move"); currentWall = ""; var initPrep = function () { //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); //hide custom selected poles MasterModify("A216", "hideoption", true, 5); //show custom option MasterModify("A216", "hideoption", false, 4); //hide apply button and move slider MasterModify("A218", "showthis", false); frontWalls = []; backWalls = []; sideWallsJSON = sdApi.scene.getData({ name: "sideWallsJSON" }).data[0].data; }; if (MasterValue("A216") == 0) { //hide move button MasterModify("A221", "showthis", false); initPrep(); for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { sideWallsJSON.frontWalls.show[i] = false; } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { sideWallsJSON.backWalls.show[i] = false; } //update 3D model sdApi.parameters.updateAsync([ { name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }, ]); } else if (MasterValue("A216") == 1) { initPrep(); for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { sideWallsJSON.frontWalls.show[i] = true; frontWalls.push(i); } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { sideWallsJSON.backWalls.show[i] = false; } //update 3D model sdApi.parameters.updateAsync([ { name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }, ]); } else if (MasterValue("A216") == 2) { initPrep(); for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { sideWallsJSON.frontWalls.show[i] = false; } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { sideWallsJSON.backWalls.show[i] = true; backWalls.push(i); } //update 3D model sdApi.parameters.updateAsync([ { name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }, ]); } else if (MasterValue("A216") == 3) { initPrep(); for (var i = 0; i < sideWallsJSON.frontWalls.show.length; ++i) { sideWallsJSON.frontWalls.show[i] = true; frontWalls.push(i); } for (var i = 0; i < sideWallsJSON.backWalls.show.length; ++i) { sideWallsJSON.backWalls.show[i] = true; backWalls.push(i); } //update 3D model sdApi.parameters.updateAsync([ { name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }, ]); } else if (MasterValue("A216") == 4 || MasterValue("A216") == 5) { AlertMessage("Use the Icons", "Add and remove walls by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished."); //show apply button MasterModify("A218", "showthis", true); MasterModify("A218", "name", "Apply Changes to Front/Back Walls"); MasterModify("A218", "text", "Apply"); var sideWallsAnchors = sdApi.scene.getData({ name: "sideWallsAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; var counter = 0; for (var i = 0; i < sideWallsAnchors.length; ++i) { var thisAlt = sideWallsAnchors[i].alt.split("_"); var imageURL = addRemoveIcons[0]; if ((thisAlt[0] == "frontWalls" && frontWalls.includes(Number(thisAlt[1]))) || (thisAlt[0] == "backWalls" && backWalls.includes(Number(thisAlt[1])))) { imageURL = addRemoveIcons[1] } var anchor = { version: "1.0", location: sideWallsAnchors[i].loc, format: "image", data: { src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: sideWallsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) { //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { var thisAlt = elem.target.getAttribute("alt").split("_"); if (elem.target.getAttribute("src") == addRemoveIcons[0]) { elem.target.src = addRemoveIcons[1]; if (thisAlt[0] == "frontWalls") { frontWalls.push(Number(thisAlt[1])); frontWalls.sort(); sideWallsJSON.frontWalls.show[thisAlt[1]] = true; } else { backWalls.push(Number(thisAlt[1])); backWalls.sort(); sideWallsJSON.backWalls.show[thisAlt[1]] = true; } } else { elem.target.src = addRemoveIcons[0]; if (thisAlt[0] == "frontWalls") { var index = frontWalls.indexOf(Number(thisAlt[1])); frontWalls.splice(index, 1); sideWallsJSON.frontWalls.show[thisAlt[1]] = false; } else { var index = backWalls.indexOf(Number(thisAlt[1])); backWalls.splice(index, 1); sideWallsJSON.backWalls.show[thisAlt[1]] = false; } } //set text which show selected walls var frontText = ""; var backText = ""; var joinText = ""; if (frontWalls.length > 0) { frontText = "Front " + frontWalls.join(); } if (backWalls.length > 0) { backText = "Back " + backWalls.join(); } if (frontWalls.length > 0 && backWalls.length > 0) { joinText = " / "; } //show custom selected poles if (frontWalls.length > 0 || backWalls.length > 0) { MasterModify("A216", "nameoption", frontText + joinText + backText, 5); MasterModify("A216", "value", 5); MasterModify("A216", "hideoption", false, 5); MasterModify("A216", "hideoption", true, 4); } else { MasterModify("A216", "value", 4); MasterModify("A216", "hideoption", false, 4); MasterModify("A216", "hideoption", true, 5); } MasterApply(); } } if (i == allImages.length - 1) { clearInterval(waitImages); refocusDomElem(); } } }, 250); }); }; break; case "A218": if (MasterValue("A218", "text")[0] == "Apply") { MasterModify("A218", "text", "Loading..."); sdApi.parameters.updateAsync({ name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON)}).then(function () { if (sideWallsJSON.length == 0) { MasterModify("A216", "value", 0); MasterModify("A216", "hideoption", false, 2); MasterModify("A216", "hideoption", true, 3); MasterModify("A218", "showthis", false); } else { MasterModify("A218", "name", "Edit Custom Front/Back Walls"); MasterModify("A218", "text", "Edit"); } MasterApply(); //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); }); } else if (MasterValue("A218", "text")[0] == "Edit") { MasterModify("A218", "text", "Loading..."); MasterModify("A215", "text", "Edit"); sdApi.parameters.updateAsync([{name:"divisionWallsJSON", value:JSON.stringify(divisionWallsJSON)},{ name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON)}]).then(function () { MasterFunction("A216"); MasterModify("A218", "name", "Apply Changes to Custom Front/Back Walls"); MasterModify("A218", "text", "Apply"); }); } break; case "A220": var moveWall = currentWall.split("_"); sideWallsJSON[moveWall[0]].move[moveWall[1]] = MasterValue("A220"); sdApi.parameters.updateAsync({ name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }).then(function () { MasterFunction("A221"); //update divisionWallsJSON divisionWalls = []; divisionWallsJSON = sdApi.scene.getData({ name: "divisionWallsJSON" }).data[0].data; for (var i = 0; i < divisionWallsJSON.divisionWalls.length; ++i) { for (var j = 0; j < divisionWallsJSON.divisionWalls[i].show.length; ++j) { if (divisionWallsJSON.divisionWalls[i].show[j]) { divisionWalls.push("axis_" + divisionWallsJSON.divisionWalls[i].axis + "_" + j); } } } }); break; case "A221": if (!MasterValue("A220", "showthis")) { AlertMessage("Use the Icons", "Select which wall to move by clicking on the icons displayed in the 3D model."); } MasterModify("A215,A218", "text", "Edit"); sdApi.parameters.updateAsync([{ name: "divisionWallsJSON", value: JSON.stringify(divisionWallsJSON) }, { name: "sideWallsJSON", value: JSON.stringify(sideWallsJSON) }]).then(function () { //show move slider button MasterModify("A220", "showthis", true); //hide move button MasterModify("A221", "showthis", false); var sideWallsAnchors = sdApi.scene.getData({ name: "sideWallsAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; var counter = 0; for (var i = 0; i < sideWallsAnchors.length; ++i) { var imageURL = moveIcon; if (sideWallsAnchors[i].alt == currentWall) { imageURL = addRemoveIcons[1]; } var thisAlt = sideWallsAnchors[i].alt.split("_"); if ((thisAlt[0] == "frontWalls" && frontWalls.includes(Number(thisAlt[1]))) || (thisAlt[0] == "backWalls" && backWalls.includes(Number(thisAlt[1])))) { var anchor = { version: "1.0", location: sideWallsAnchors[i].loc, format: "image", data: { src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: sideWallsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); //clean images icons variable allImagesIcons = []; for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == moveIcon || allImages[i].src == addRemoveIcons[1]) { allImagesIcons.push(allImages[i]); //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { currentWall = elem.target.getAttribute("alt"); var thisAlt = elem.target.getAttribute("alt").split("_"); //put back move icons in all anchers for (var j = 0; j < allImagesIcons.length; ++j) { allImagesIcons[j].src = moveIcon; } elem.target.src = addRemoveIcons[1]; var sliderMax = MasterValue("A9") / 2; //show name of wall in slider if (thisAlt[0] == "frontWalls") { if (sdApi.scene.getData({ name: "wingWallJSON" }).data[0].data[thisAlt[0]][thisAlt[1]]) { sliderMax = (MasterValue("A9") / 2) + frontWingDepth; } MasterModify("A220", "name", "Move Front Wall " + thisAlt[1]); } else { if (sdApi.scene.getData({ name: "wingWallJSON" }).data[0].data[thisAlt[0]][thisAlt[1]]) { sliderMax = (MasterValue("A9") / 2) + backWingDepth; } MasterModify("A220", "name", "Move Back Wall " + thisAlt[1]); } //update max and value of move slider with current position of wall MasterModify("A220", "value", sideWallsJSON[thisAlt[0]].move[thisAlt[1]]); MasterModify("A220", "max", sliderMax); MasterApply(); } } if (i == allImages.length - 1) { clearInterval(waitImages); refocusDomElem(); } } }, 0); }); }); break; case "A203_IN": showBayInputs = false; MasterFunction("A8_IN"); break; case "A203_OUT": MasterFunction("A8_OUT"); //make sure changes were applied MasterModify("A205,A207","text","Apply"); MasterFunction("A205,A207"); break; case "A204": MasterFunction("A8_IN"); if (MasterValue("A204") == 0 || MasterValue("A204") == 1) { //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[] }); //hide custom selected poles MasterModify("A204","hideoption",true,3); //show custom option MasterModify("A204","hideoption",false,2); //hide apply button MasterModify("A205","showthis",false); centrePoles = []; } if (MasterValue("A204") == 1) { centrePoles = Array.from({length: MasterValue("A11") + 1}, (v, k) => k+1); } else if (MasterValue("A204") == 2 || MasterValue("A204") == 3) { if (anchorsContent.length == 0){ AlertMessage("Use the Icons","Add and remove centre poles by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished."); } //show apply button MasterModify("A205","showthis",true); MasterModify("A205","name","Apply Changes to Custom Centre Poles"); MasterModify("A205","text","Apply"); var centrePolesAnchors = sdApi.scene.getData({name:"centrePolesAnchors"}).data[0].data; anchorsContent = []; for (var i = 0; i < centrePolesAnchors.length; ++i) { var imageURL = addRemoveIcons[0]; if (centrePoles.includes(i+1)){ imageURL = addRemoveIcons[1] } var anchor = { version:"1.0", location: centrePolesAnchors[i].loc, format:"image", data:{ src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height:28, width:28, alt: centrePolesAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function() { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]){ //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { if (elem.target.getAttribute("src") == addRemoveIcons[0]) { elem.target.src = addRemoveIcons[1]; centrePoles.push(Number(elem.target.getAttribute("alt"))); centrePoles.sort(); } else { elem.target.src = addRemoveIcons[0]; var index = centrePoles.indexOf(Number(elem.target.getAttribute("alt"))); centrePoles.splice(index,1); } //show custom selected poles if (centrePoles.length > 0){ MasterModify("A204","nameoption","Axes " + centrePoles.join(),3); MasterModify("A204","value",3); MasterModify("A204","hideoption",false,3); MasterModify("A204","hideoption",true,2); } else { MasterModify("A204","value",2); MasterModify("A204","hideoption",false,2); MasterModify("A204","hideoption",true,3); } MasterApply(); } } if (i == allImages.length - 1){ clearInterval(waitImages); //refocusDomElem(); } } },0); }); } //apply changes to centre poles in 3D model if (MasterValue("A204") == 0 || MasterValue("A204") == 1) { sdApi.parameters.updateAsync({name:"centrePoles", value:JSON.stringify(centrePoles)}); } break; case "A205": if (MasterValue("A205","text")[0] == "Apply"){ MasterModify("A205","text","Loading..."); sdApi.parameters.updateAsync({name:"centrePoles", value:JSON.stringify(centrePoles)}).then(function() { if (centrePoles.length == 0){ MasterModify("A204","value",0); MasterModify("A204","hideoption",false,2); MasterModify("A204","hideoption",true,3); MasterModify("A205","showthis",false); }else{ MasterModify("A205","name","Edit Custom Centre Poles"); MasterModify("A205","text","Edit"); } MasterApply(); //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[] }); }); } else if (MasterValue("A205","text")[0] == "Edit"){ MasterFunction("A204"); MasterModify("A205","name","Apply Changes to Custom Centre Poles"); MasterModify("A205","text","Apply"); } break; case "A206": var initPrep = function () { //Clean anchor Conten anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); //hide custom selected poles MasterModify("A206", "hideoption", true, 5); //show custom option MasterModify("A206", "hideoption", false, 4); //hide apply button MasterModify("A207", "showthis", false); frontWings = []; frontWingDepth = 0; backWings = []; backWingDepth = 0; //hide wings dimensions options MasterModify("A208,A209,A210,A211,A234", "showthis", false); }; if (MasterValue("A206") == 0) { storedWingOpt = 0; initPrep(); //update 3D model sdApi.scene.pause(); sdApi.parameters.updateAsync([ { name: "frontWings", value: JSON.stringify(frontWings) }, { name: "backWings", value: JSON.stringify(backWings) } ]).then(function () { updateWalls(); }); } else if (MasterValue("A206") == 1) { if (MaxSizeWings[0] < MasterValue("A208", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add front wing."); MasterModify("A206", "value", storedWingOpt); } else { storedWingOpt = 1; initPrep(); frontWings = Array.from({ length: MasterValue("A11") }, (v, k) => k + 1); frontWingDepth = MasterValue("A208"); //show front wings dimensions options MasterModify("A208,A209,A234", "showthis", true); //update 3D model sdApi.scene.pause(); sdApi.parameters.updateAsync([ { name: "frontWings", value: JSON.stringify(frontWings) }, { name: "backWings", value: JSON.stringify(backWings) } ]).then(function () { updateWalls(); }); } } else if (MasterValue("A206") == 2) { if (MaxSizeWings[1] < MasterValue("A210", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add back wing."); MasterModify("A206", "value", storedWingOpt); } else { storedWingOpt = 2; initPrep(); backWings = Array.from({ length: MasterValue("A11") }, (v, k) => k + 1); backWingDepth = MasterValue("A210"); //show back wings dimensions options MasterModify("A210,A211,A234", "showthis", true); //update 3D model sdApi.scene.pause(); sdApi.parameters.updateAsync([ { name: "frontWings", value: JSON.stringify(frontWings) }, { name: "backWings", value: JSON.stringify(backWings) } ]).then(function () { updateWalls(); }); } } else if (MasterValue("A206") == 3) { if (MaxSizeWings[0] < MasterValue("A208", "min") && MaxSizeWings[1] < MasterValue("A210", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add wings."); MasterModify("A206", "value", 0); storedWingOpt = 0; } else if (MaxSizeWings[0] < MasterValue("A208", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add front wing."); MasterModify("A206", "value", storedWingOpt); } else if (MaxSizeWings[1] < MasterValue("A210", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add back wing."); MasterModify("A206", "value", storedWingOpt); } else { storedWingOpt = 3; initPrep(); frontWings = Array.from({ length: MasterValue("A11") }, (v, k) => k + 1); frontWingDepth = MasterValue("A208"); backWings = Array.from({ length: MasterValue("A11") }, (v, k) => k + 1); backWingDepth = MasterValue("A210"); //show wings dimensions options MasterModify("A208,A209,A210,A211,A234", "showthis", true); //update 3D model sdApi.scene.pause(); sdApi.parameters.updateAsync([ { name: "frontWings", value: JSON.stringify(frontWings) }, { name: "backWings", value: JSON.stringify(backWings) } ]).then(function () { updateWalls(); }); } } else if (MasterValue("A206") == 4 || MasterValue("A206") == 5) { if (MaxSizeWings[0] < MasterValue("A208", "min") && MaxSizeWings[1] < MasterValue("A210", "min")) { AlertMessage("Not Enough Height", "There is not enough eave height to add wings."); MasterModify("A206", "value", 0); storedWingOpt = 0; } else { storedWingOpt = 4; if (anchorsContent.length == 0) { var frontMessage = ""; var backMessage = ""; if (MaxSizeWings[0] < MasterValue("A208", "min")) { frontMessage = "

Front wing icons will not be displayed as there is not enough eave height." } else if (MaxSizeWings[1] < MasterValue("A210", "min")) { backMessage = "

Back wing icons will not be displayed as there is not enough eave height." } AlertMessage("Use the Icons", "Add and remove wings by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished." + frontMessage + backMessage); } //show apply button MasterModify("A207", "showthis", true); MasterModify("A207", "name", "Apply Changes to Custom Wings"); MasterModify("A207", "text", "Apply"); var wingsAnchors = sdApi.scene.getData({ name: "wingsAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; var counter = 0; for (var i = 0; i < wingsAnchors.length; ++i) { counter++; if (counter > wingsAnchors.length / 2) { counter = 1 } var imageURL = addRemoveIcons[0]; if ((wingsAnchors[i].alt.split("_")[0] == "frontWalls" && frontWings.includes(counter)) || (wingsAnchors[i].alt.split("_")[0] == "backWalls" && backWings.includes(counter))) { imageURL = addRemoveIcons[1] } if ((wingsAnchors[i].alt.split("_")[0] == "frontWalls" && MaxSizeWings[0] >= MasterValue("A208", "min")) || (wingsAnchors[i].alt.split("_")[0] == "backWalls" && MaxSizeWings[1] >= MasterValue("A210", "min"))) { var anchor = { version: "1.0", location: wingsAnchors[i].loc, format: "image", data: { src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: wingsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) { //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { var thisAlt = elem.target.getAttribute("alt").split("_"); if (elem.target.getAttribute("src") == addRemoveIcons[0]) { elem.target.src = addRemoveIcons[1]; if (thisAlt[0] == "frontWalls") { frontWings.push(Number(thisAlt[1])); frontWings.sort(); } else { backWings.push(Number(thisAlt[1])); backWings.sort(); } } else { elem.target.src = addRemoveIcons[0]; if (thisAlt[0] == "frontWalls") { var index = frontWings.indexOf(Number(thisAlt[1])); frontWings.splice(index, 1); } else { var index = backWings.indexOf(Number(thisAlt[1])); backWings.splice(index, 1); } } //set text which show selected wings var frontText = ""; var backText = ""; var joinText = ""; if (frontWings.length > 0) { frontText = "Front " + frontWings.join(); } if (backWings.length > 0) { backText = "Back " + backWings.join(); } if (frontWings.length > 0 && backWings.length > 0) { joinText = " / "; } //show custom selected poles if (frontWings.length > 0 || backWings.length > 0) { MasterModify("A206", "nameoption", frontText + joinText + backText, 5); MasterModify("A206", "value", 5); storedWingOpt = 5; MasterModify("A206", "hideoption", false, 5); MasterModify("A206", "hideoption", true, 4); } else { MasterModify("A206", "value", 4); storedWingOpt = 4; MasterModify("A206", "hideoption", false, 4); MasterModify("A206", "hideoption", true, 5); } MasterApply(); } } if (i == allImages.length - 1) { clearInterval(waitImages); refocusDomElem(); } } }, 250); }); } }; MasterFunction("A8_IN"); break; case "A207": if (MasterValue("A207", "text")[0] == "Apply") { MasterModify("A207", "text", "Loading..."); if (frontWings.length > 0) { frontWingDepth = MasterValue("A208"); } if (backWings.length > 0) { backWingDepth = MasterValue("A210") } sdApi.scene.pause(); sdApi.parameters.updateAsync([ { name: "frontWings", value: JSON.stringify(frontWings) }, { name: "backWings", value: JSON.stringify(backWings) } ]).then(function () { if (frontWings.length == 0 && backWings.length == 0) { MasterModify("A206", "value", 0); MasterModify("A206", "hideoption", false, 4); MasterModify("A206", "hideoption", true, 5); MasterModify("A207,A234", "showthis", false); } else { MasterModify("A207", "name", "Edit Custom Wings"); MasterModify("A207", "text", "Edit"); } //show or hide front wings options if (frontWings.length > 0) { MasterModify("A208,A209,A234", "showthis", true); } else { MasterModify("A208,A209", "showthis", false); } //show or hide back wings options if (backWings.length > 0) { MasterModify("A210,A211,A234", "showthis", true); } else { MasterModify("A210,A211", "showthis", false); } //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [] }); updateWalls(); }); } else if (MasterValue("A207", "text")[0] == "Edit") { MasterFunction("A206"); MasterModify("A207", "name", "Apply Changes to Custom Wings"); MasterModify("A207", "text", "Apply"); } break; case "A208": MasterFunction("A8_IN"); frontWingDepth = MasterValue("A208"); sdApi.parameters.updateAsync({name:"Front Wing Size", value:MasterValue("A208")}).then(function() { checkWings(); }); break; case "A209": //setting perspective camera sdApi.updateSettingsAsync( { scene: { camera: { cameraTypes: { active: 0 } } } } ).then(function() { MasterView("left"); sdApi.parameters.updateAsync({name:"Front Wing Height", value:MasterValue("A209")}); }); break; case "A210": MasterFunction("A8_IN"); backWingDepth = MasterValue("A208"); sdApi.parameters.updateAsync({name:"Back Wing Size", value:MasterValue("A210")}).then(function() { checkWings(); }); break; case "A211": //setting perspective camera sdApi.updateSettingsAsync( { scene: { camera: { cameraTypes: { active: 0 } } } } ).then(function() { MasterView("left"); sdApi.parameters.updateAsync({name:"Back Wing Height", value:MasterValue("A211")}); }); break; case "A234": //setting perspective camera sdApi.updateSettingsAsync( { scene: { camera: { cameraTypes: { active: 0 } } } } ).then(function() { MasterView("left"); sdApi.parameters.updateAsync({name:"Roof Pitch Wings", value:MasterValue("A234")}).then(function() { checkWings(); }); }); break; case "A106_IN": showBayInputs = false; MasterFunction('A8_IN'); AlertMessage("Select Wall", "Select which wall to edit by clicking on the edit icons displayed in the 3D model."); drWdWallLocAnchors = sdApi.scene.getData({ name: "drWdWallLocAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; for (var i = 0; i < drWdWallLocAnchors.length; ++i) { var anchor = { version: "1.0", location: drWdWallLocAnchors[i].loc, format: "image", data: { src: editIcon, positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: drWdWallLocAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is edit icon option if (allImages[i].src == editIcon) { //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { currentWall = elem.target.getAttribute("alt"); //enebling zoom and changing camera type sdApi.updateSettingsAsync( { scene: { camera: { controls: { orbit: { enableZoom: true } }, cameraTypes: { active: 0 } } } } ).then(function () { //move camera in front of wall for (var i = 0; i < drWdWallLocAnchors.length; ++i) { if (currentWall == drWdWallLocAnchors[i].alt) { sdApi.scene.camera.updateAsync( { position: drWdWallLocAnchors[i].position, target: drWdWallLocAnchors[i].target }, { duration: viewerSpeed } ); break; } } }); //hide general dimensions sdApi.scene.toggleGeometry([], [dimensionsScenePath]); //show add door/window option and change wall option MasterModify("A171,A232", "showthis", true); MasterApply(); drWdEditionAnchors(); } } if (i == allImages.length - 1) { clearInterval(waitImages); } } }, 250); }); break; case "A106_OUT": //hide windows/doors dimensions sdApi.scene.toggleGeometry([], [drWdDimScenePath]); for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { drsWdsJSON.DrsWds[i].dimensions = false; //if there is a collision if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision) { drsWdsJSON.DrsWds.splice(i,1); AlertMessage("Door/Window Removed",MasterValue("A224","nameoption") + " was removed as it was collisioning with other doors or windows."); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ) } }; MasterModify("A224","value",null); MasterModify("A223", "name", "Select Door/Window"); MasterModify("A171,A223,A226,A227,A228,A229,A230,A231,A232,A233", "showthis", false); currentID = null; editionMode = false; //Hide Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[] }); MasterFunction('A8_OUT'); break; case "A172_IN": itemId = MasterId; nextId = "A"+(Number(itemId.match(/[0-9]+/g))+1); widthId = MasterSectionId(nextId,3); heightId = MasterSectionId(nextId,4); locationXId = MasterSectionId(nextId,5); locationZId = MasterSectionId(nextId,6); openingSideId = MasterSectionId(nextId,7); hingePostId = MasterSectionId(nextId,8); if (MasterValue("A17")==0){ MasterModify(nextId,"hideoption",true,"intWall_1"); MasterModify(nextId,"hideoption",true,"intWall_2"); } else if (MasterValue("A17")==1){ MasterModify(nextId,"hideoption",false,"intWall_1"); MasterModify(nextId,"hideoption",true,"intWall_2"); } else { MasterModify(nextId,"hideoption",false,"intWall_1"); MasterModify(nextId,"hideoption",false,"intWall_2"); } if (doorsWindows["doorsWindows"].length != 0){ for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == itemId) { doorsWindows["doorsWindows"][i]["dimensions"] = true; SetValShapeDiver("DoorsAndWindows",JSON.stringify(doorsWindows,null,0)); style = doorsWindows["doorsWindows"][i]["style"]; wallValue = doorsWindows["doorsWindows"][i]["wall"]; if (doorsWindows["doorsWindows"][i]["wall"] == "front"){ var payload = { command:"setCamera", arguments:[{ x:(doorsWindows["doorsWindows"][i]["bay"]*MasterValue("A10"))-(MasterValue("A10")/2), y:(MasterValue("A10")+MasterValue("A9"))*-1, z:MasterValue("A13")/2 },{ x:(doorsWindows["doorsWindows"][i]["bay"]*MasterValue("A10"))-(MasterValue("A10")/2), y:0, z:MasterValue("A13")/2 }, true, 3000] }; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } else if (doorsWindows["doorsWindows"][i]["wall"] == "back"){ var payload = { command:"setCamera", arguments:[{ x:(doorsWindows["doorsWindows"][i]["bay"]*MasterValue("A10"))-(MasterValue("A10")/2), y:MasterValue("A10")+MasterValue("A9"), z:MasterValue("A13")/2 },{ x:(doorsWindows["doorsWindows"][i]["bay"]*MasterValue("A10"))-(MasterValue("A10")/2), y:0, z:MasterValue("A13")/2 }, true, 3000] }; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } else if (doorsWindows["doorsWindows"][i]["wall"] == "right"){MasterView('right')} else if (doorsWindows["doorsWindows"][i]["wall"] == "left"){MasterView('left')} else if (doorsWindows["doorsWindows"][i]["wall"] == "intWall_1"){ var payload = { command:"setCamera", arguments:[{ x:(MasterValue("A79")*MasterValue("A10"))-MasterValue("A9"), y:0, z:ridgeHeight*2 },{ x:MasterValue("A79")*MasterValue("A10"), y:0, z:(MasterValue("A13")/2) }, true, 3000] }; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } else if (doorsWindows["doorsWindows"][i]["wall"] == "intWall_2"){ var payload = { command:"setCamera", arguments:[{ x:(MasterValue("A83")*MasterValue("A10"))-MasterValue("A9"), y:0, z:ridgeHeight*2 },{ x:MasterValue("A83")*MasterValue("A10"), y:0, z:(MasterValue("A13")/2) }, true, 3000] }; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } break; }else{ if (i == (doorsWindows["doorsWindows"].length-1)){ style = null; doorsWindows["doorsWindows"].push({ "ID": itemId, "style": "roller", "wall": "front", "bay": 1, "location": [0,0], "width": 0, "height": 0, "openingSide": "out", "hingePost": "right", "dimensions": true, }); break; } } } }else{ style = null; doorsWindows["doorsWindows"].push({ "ID": itemId, "style": "roller", "wall": "front", "bay": 1, "location": [0,0], "width": 0, "height": 0, "openingSide": "out", "hingePost": "right", "dimensions": true, }); } //alert(JSON.stringify(doorsWindows,null,0)); break; case "A172_OUT": for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == itemId) { doorsWindows["doorsWindows"][i]["dimensions"] = false; break; } } SetValShapeDiver("DoorsAndWindows",JSON.stringify(doorsWindows,null,0)); MasterView("backward"); for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["style"] != "WD") { MasterModify("A186","showthis",null); break; }else{ MasterModify("A186","showthis",false); } } break; case "A176": //setJSONval wallValue = MasterValue (MasterId); for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"][i]["wall"] = MasterValue(MasterId); break; } } //moveCamera if (MasterValue(MasterId)=="front"){MasterView('down')} else if (MasterValue(MasterId)=="back"){MasterView('up')} else if (MasterValue(MasterId)=="right"){MasterView('right')} else if (MasterValue(MasterId)=="left"){MasterView('left')} else if (MasterValue(MasterId)=="intWall_1"){ var payload = { command:"setCamera", arguments:[{x:(MasterValue("A79")*MasterValue("A10"))-MasterValue("A9"), y:0, z:ridgeHeight*2},{x:MasterValue("A79")*MasterValue("A10"), y:0, z:(MasterValue("A13")/2)}, true, 3000]}; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } else if (MasterValue(MasterId)=="intWall_2"){ var payload = { command:"setCamera", arguments:[{x:(MasterValue("A83")*MasterValue("A10"))-MasterValue("A9"), y:0, z:ridgeHeight*2},{x:MasterValue("A83")*MasterValue("A10"), y:0, z:(MasterValue("A13")/2)}, true, 3000]}; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } //showNextStep if (MasterValue(MasterId)=="front"||MasterValue(MasterId)=="back"){ SetValShapeDiver("Bay Numbers",true); MasterModify(MasterSectionId(MasterId,1),"showthis",true); }else{ SetValShapeDiver("Bay Numbers",false); MasterModify(MasterSectionId(MasterId,1),"showthis",false); if (MasterValue(MasterSectionId(MasterId,1)) == null){ MasterModify(MasterSectionId(MasterId,1),"value","1"); } for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"][i]["bay"] = MasterValue(MasterSectionId(MasterId,1)); break; } } MasterModify(MasterSectionId(MasterId,2),"showthis",null); if (style == null){ MasterModify(MasterSectionId(MasterId,2),"open",true); } } for (var i = 0; i <= 15; i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",false,i); } for (var i = MasterValue("A11")+1; i <= 15; i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } //SECT A if (MasterValue("A30") > 0 && ((wallValue == "front" && MasterValue("A42") == false) || (wallValue == "back" && MasterValue("A63") == false))){ for (var i = 1; i <= Number(MasterValue("A30")); i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } } //SECT B if ((wallValue == "front" && MasterValue("A43") == false) || (wallValue == "back" && MasterValue("A64") == false)){ var end; if (MasterValue("A17")==0){end=MasterValue("A59");} else {end = MasterValue("A79");} for (var i = Number(MasterValue("A30"))+1; i <= Number(end); i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } } //SECT C if (MasterValue("A17") > 0 && ((wallValue == "front" && MasterValue("A44") == false) || (wallValue == "back" && MasterValue("A65") == false))){ var end; if (MasterValue("A17")==1){end=MasterValue("A59");} else {end = MasterValue("A83");} for (var i = Number(MasterValue("A79"))+1; i <= Number(end); i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } } //SECT D if (MasterValue("A17") > 1 && ((wallValue == "front" && MasterValue("A45") == false) || (wallValue == "back" && MasterValue("A66") == false))){ for (var i = Number(MasterValue("A83"))+1; i <= Number(MasterValue("A59")); i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } } //SECT E if (MasterValue("A59") != MasterValue("A11") && ((wallValue == "front" && MasterValue("A46") == false) || (wallValue == "back" && MasterValue("A67") == false))){ for (var i = Number(MasterValue("A59"))+1; i <= MasterValue("A11"); i++){ MasterModify(MasterSectionId(nextId,1),"hideoption",true,i); } } if (style != null){updateDoors();} break; case "A181": //setJSONval for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"][i]["bay"] = MasterValue(MasterId); break; } } //moveCamera if (MasterValue(MasterSectionId(MasterId,0))=="front"){ var payload = { command:"setCamera", arguments:[{x:(MasterValue(MasterId)*MasterValue("A10"))-(MasterValue("A10")/2), y:(MasterValue("A10")+MasterValue("A9"))*-1, z:MasterValue("A13")/2},{x:(MasterValue(MasterId)*MasterValue("A10"))-(MasterValue("A10")/2), y:0, z:MasterValue("A13")/2}, true, 3000]}; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); }else if (MasterValue(MasterSectionId(MasterId,0))=="back"){ var payload = { command:"setCamera", arguments:[{x:(MasterValue(MasterId)*MasterValue("A10"))-(MasterValue("A10")/2), y:MasterValue("A10")+MasterValue("A9"), z:MasterValue("A13")/2},{x:(MasterValue(MasterId)*MasterValue("A10"))-(MasterValue("A10")/2), y:0, z:MasterValue("A13")/2}, true, 3000]}; SourceShapeDiver.postMessage(payload,"https://www.shapediver.com"); } //showNextStep if (style != null){updateDoors();} else {MasterModify(MasterSectionId(MasterId,2),"open",true);} MasterModify(MasterSectionId(MasterId,2),"showthis",null); SetValShapeDiver("Bay Numbers",false); break; case "A175": //setJSONval for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterSectionId(MasterId))) { doorsWindows["doorsWindows"][i]["style"] = MasterValue(MasterId); break; } } //changeSectionNameAndClose MasterModify(MasterSectionId(MasterId),"open",false); MasterModify(MasterSectionId(MasterId),"name","Change Door/Window"); style = MasterValue(MasterId); updateDoors(); break; case "A178": updateDoors(); break; case "A179": updateDoors(); break; case "A177": updateDoors(); break; case "A185": updateDoors(); break; case "A182": for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"][i]["openingSide"] = MasterValue(MasterId); break; } } SetValShapeDiver("DoorsAndWindows",JSON.stringify(doorsWindows,null,0)); break; case "A183": for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"][i]["hingePost"] = MasterValue(MasterId); break; } } SetValShapeDiver("DoorsAndWindows",JSON.stringify(doorsWindows,null,0)); break; case "A180": for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["ID"] == MasterSectionId(MasterId)) { doorsWindows["doorsWindows"].splice(i,1); break; } } updateDoors(); MasterModify("Menu1", "close"); MasterModify(itemId,"showthis",false); break; case "A225": AlertMessage("Use the Icons", "Select where to add doors or windows by clicking on the icons displayed in the 3D model."); drWdWallLocAnchors = sdApi.scene.getData({ name: "drWdWallLocAnchors" }).data[0].data; //Clean anchor Content anchorsContent = []; for (var i = 0; i < drWdWallLocAnchors.length; ++i) { var anchor = { version: "1.0", location: drWdWallLocAnchors[i].loc, format: "image", data: { src: addRemoveIcons[0], positioning: { horizontal: 'center', vertical: 'center' }, height: 28, width: 28, alt: drWdWallLocAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id: "anchors", content: [ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function () { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); //clean images icons variable allImagesIcons = []; for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]) { allImagesIcons.push(allImages[i]); //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { currentWall = elem.target.getAttribute("alt"); MasterModify("A223", "showthis", true); MasterModify("A223", "open", true); MasterApply(); } } if (i == allImages.length - 1) { clearInterval(waitImages); } } }, 0); }); break; case "A232": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { drsWdsJSON.DrsWds[i].dimensions = false; //if there is a collision if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision) { drsWdsJSON.DrsWds.splice(i,1); AlertMessage("Door/Window Removed",MasterValue("A224","nameoption") + " was removed as it was collisioning with other doors or windows."); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ) } }; //hide windows/doors dimensions sdApi.scene.toggleGeometry([], [drWdDimScenePath]); MasterModify("A224","value",null); MasterModify("A223", "name", "Select Door/Window"); MasterModify("A171,A223,A226,A227,A228,A229,A230,A231,A232,A233", "showthis", false); currentID = null; editionMode = false; MasterFunction('A106_IN'); break; case "A171": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { drsWdsJSON.DrsWds[i].dimensions = false; //if there is a collision if (drsWdsJSON.DrsWds[i].ID == currentID && drsWdsAnchors[i].collision) { drsWdsJSON.DrsWds.splice(i,1); AlertMessage("Door/Window Removed",MasterValue("A224","nameoption") + " was removed as it was collisioning with other doors or windows."); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { currentID = null; drWdEditionAnchors(); }); } else if (!editDrWdMessage) { editDrWdMessage = true; AlertMessage("Edit Existing Doors/windows","You can edit existing doors and windows by clicking on the edit icon shown in front of them in the 3D model.") } } //hide windows/doors dimensions sdApi.scene.toggleGeometry([], [drWdDimScenePath]); MasterModify("A224","value",null); MasterModify("A223", "name", "Select Door/Window"); MasterModify("A223", "showthis", true); MasterModify("A223", "open", true); MasterModify("A226,A227,A228,A229,A230,A231,A233", "showthis", false); currentID = null; editionMode = false; drWdEditionAnchors(); break; case "A233": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds.splice(i,1); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { currentID = null; }); } } MasterModify("A223,A226,A227,A228,A229,A230,A231,A233", "showthis", false); break; case "A224": //rename dropdown MasterModify("A223", "name", newDropdownName("Loading " + MasterValue("A224", "nameoption"))); //if edition mode is to add components if (!editionMode) { currentID = Date.now().toString(); } var drsWdsLimitsJSON = JSON.parse(sdApi.parameters.get({ name: "drsWdsLimitsJSON" }).data[0].value).DrsWdsLimits; var initHeight; var initWidth; var initLocX = MasterValue("A228"); var initLocZ = 0; for (var i = 0; i < drsWdsLimitsJSON.length; ++i) { if (MasterValue("A224") == drsWdsLimitsJSON[i].style) { initHeight = drsWdsLimitsJSON[i].heightLimits[0]; initWidth = drsWdsLimitsJSON[i].widthLimits[0]; //if edition mode is to add component, add the default minimum X offset if (!editionMode) { initLocX = drsWdsLimitsJSON[i].widthOffset; } break; } } if (MasterValue("A224") == "WD") { initLocZ = 1; } var initDrWd = { ID: currentID, style: MasterValue("A224"), height: initHeight, width: initWidth, wall: currentWall, loc: [initLocX, initLocZ], dimensions: true }; if (MasterValue("A224") == "BarnDr" || MasterValue("A224") == "zincPA" || MasterValue("A224") == "steelPA" || MasterValue("A224") == "alumPA") { initDrWd.openSide = MasterValue("A230"); } if (MasterValue("A224") == "zincPA" || MasterValue("A224") == "steelPA" || MasterValue("A224") == "alumPA") { initDrWd.hingeLoc = MasterValue("A231"); } var thisComponentLoc; //if edition mode is to add component, add new object to doors and windows JSON if (!editionMode) { console.log(initDrWd); thisComponentLoc = drsWdsJSON.DrsWds.length; drsWdsJSON.DrsWds.push(initDrWd); } //else if edition mode is to edit components, replace component with new selected one else { for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { //store current window/door description in case process fails so we can come back to it storeDrWdJSON = drsWdsJSON.DrsWds[i]; storeDrWdOpt = MasterValue("A224"); thisComponentLoc = i; drsWdsJSON.DrsWds[i] = initDrWd; } } } sdApi.scene.pause(); sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { drsWdsAnchors = sdApi.scene.getData({ name: "drsWdsAnchors" }).data[0].data; //check if there is enough space if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false || drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) { //if edition mode is to add component, remove component as it failed. if (!editionMode) { drsWdsJSON.DrsWds.splice(thisComponentLoc, 1); } //else if edition mode is to edit components, go back to stored window/door description else { drsWdsJSON.DrsWds[thisComponentLoc] = storeDrWdJSON; } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { sdApi.scene.resume(); if (!editionMode) { MasterModify("A223", "name","Select Door/Window"); } //if we were editing an existing door/window else { MasterModify("A224", "value", storeDrWdOpt); MasterModify("A223", "name", newDropdownName("Change " + MasterValue("A224", "nameoption"))); } MasterApply(); }); //alert messages if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false && drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) { AlertMessage("Not Enough Height","There is no enough wall length and wall height for " + MasterValue("A224", "nameoption") + "."); } else if (drsWdsAnchors[thisComponentLoc].heightLimits[0] == false) { AlertMessage("Not Enough Height","There is no enough wall height for " + MasterValue("A224", "nameoption") + "."); } else if (drsWdsAnchors[thisComponentLoc].widthLimits[0] == false) { AlertMessage("Not Enough Height","There is no enough wall length for " + MasterValue("A224", "nameoption") + "."); } } else { //show windows/doors dimensions sdApi.scene.toggleGeometry([drWdDimScenePath],[]); editionMode = true; //check collisions if (drsWdsAnchors[thisComponentLoc].collision) { AlertMessage("Collision Detected","Your " + MasterValue("A224", "nameoption") + " is collisioning with other doors or windows. If possible, please solve this collision by moving, resizing or changing " + MasterValue("A224", "nameoption") + ", otherwise please remove it."); } //show opening side option if (MasterValue("A224") == "BarnDr" || MasterValue("A224") == "zincPA" || MasterValue("A224") == "steelPA" || MasterValue("A224") == "alumPA") { MasterModify("A230", "showthis", true); } else { MasterModify("A230", "showthis", false); } //show hinge position option if (MasterValue("A224") == "zincPA" || MasterValue("A224") == "steelPA" || MasterValue("A224") == "alumPA") { MasterModify("A231", "showthis", true); } else { MasterModify("A231", "showthis", false); } updateWdDrOptions(); drWdEditionAnchors(); } }); break; case "A226": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].width = MasterValue("A226"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A227": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].height = MasterValue("A227"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A228": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].loc[0] = MasterValue("A228"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A229": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].loc[1] = MasterValue("A229"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A230": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].openSide = MasterValue("A230"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A231": for (var i = 0; i < drsWdsJSON.DrsWds.length; ++i) { if (drsWdsJSON.DrsWds[i].ID == currentID) { drsWdsJSON.DrsWds[i].hingeLoc = MasterValue("A231"); break; } } sdApi.parameters.updateAsync( { name: "drsWdsJSON", value: JSON.stringify(drsWdsJSON) } ).then(function () { updateWdDrOptions(); drWdEditionAnchors(); }); break; case "A84_OUT": //make sure changes were applied MasterModify("A213","text","Apply"); MasterFunction("A213"); break; case "A86": updateBeforeDownload.push({name:"Ridge and Barge Flashing?",value: MasterValue("A86")}); sdApi.parameters.updateAsync({name:"Ridge and Barge Flashing?",value: true}).then(function(){ var ridgeBargePaths = [roofScenePath + ".content_2",roofScenePath + ".content_3"]; //show hide geometry in the scene if (MasterValue("A86")){ sdApi.scene.toggleGeometry(ridgeBargePaths,[]); } else { sdApi.scene.toggleGeometry([],ridgeBargePaths); } //show or hide colors options MasterModify("A94,A96","showthis", MasterValue("A86")); }); break; case "A87": updateBeforeDownload.push({name:"Gutters?", value: MasterValue("A87")}); sdApi.parameters.updateAsync({name:"Gutters?", value: true}).then(function(){ var gutterPath = [roofScenePath + ".content_4"]; //show hide geometry in the scene if (MasterValue("A87")){ sdApi.scene.toggleGeometry(gutterPath,[]); } else { sdApi.scene.toggleGeometry([],gutterPath); } //show or hide colors options MasterModify("A100","showthis",MasterValue("A87")); }); break; case "A105": updateBeforeDownload.push({name:"Corner Flashing?", value: MasterValue("A105")}); //make sure all assets are shown sdApi.parameters.updateAsync({name:"Corner Flashing?", value: true}).then(function(){ var cornerPath = [wallScenePath + ".content_2"]; //show hide geometry in the scene if (MasterValue("A105")){ sdApi.scene.toggleGeometry(cornerPath,[]); } else { sdApi.scene.toggleGeometry([],cornerPath); } //show or hide colors options MasterModify("A103","showthis",MasterValue("A105")); }); break; case "A212": //setting camera to top view MasterView("backward"); if (MasterValue("A212") == 0 || MasterValue("A212") == 1) { //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[] }); //hide custom selected skylights MasterModify("A212","hideoption",true,3); //show custom option MasterModify("A212","hideoption",false,2); //hide apply button MasterModify("A213","showthis",false); skylights = []; } if (MasterValue("A212") == 1) { skylights = Array.from({length: MasterValue("A11")}, (v, k) => k+1); } else if (MasterValue("A212") == 2 || MasterValue("A212") == 3) { if (anchorsContent.length == 0){ AlertMessage("Use the Icons","Add and remove skylights by clicking on the icons displayed in the 3D model. Click on 'Apply' when finished."); } //show apply button MasterModify("A213","showthis",true); MasterModify("A213","name","Apply Changes to Skylights"); MasterModify("A213","text","Apply"); var skylightsAnchors = sdApi.scene.getData({name:"skylightsAnchors"}).data[0].data; anchorsContent = []; for (var i = 0; i < skylightsAnchors.length; ++i) { var imageURL = addRemoveIcons[0]; if (skylights.includes(i+1)){ imageURL = addRemoveIcons[1] } var anchor = { version:"1.0", location: skylightsAnchors[i].loc, format:"image", data:{ src: imageURL, positioning: { horizontal: 'center', vertical: 'center' }, height:28, width:28, alt: skylightsAnchors[i].alt, hidden: false } } anchorsContent.push(anchor); } //Create Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[ { format: sdApi.scene.FORMAT.ANCHOR, data: anchorsContent } ] }).then(function() { //wait image elements to be added to the html page var waitImages = setInterval(function () { //look for the images to add click events var allImages = document.getElementsByTagName('IMG'); for (var i = 0; i < allImages.length; ++i) { //if image is add or remove option if (allImages[i].src == addRemoveIcons[0] || allImages[i].src == addRemoveIcons[1]){ //make sure image gets placed in the correct place allImages[i].parentElement.style.position = "absolute"; //make sure image can be clicked allImages[i].style.pointerEvents = "auto"; allImages[i].style.cursor = "pointer"; //when is clicked allImages[i].onclick = function (elem) { if (elem.target.getAttribute("src") == addRemoveIcons[0]) { elem.target.src = addRemoveIcons[1]; skylights.push(Number(elem.target.getAttribute("alt"))); skylights.sort(); } else { elem.target.src = addRemoveIcons[0]; var index = skylights.indexOf(Number(elem.target.getAttribute("alt"))); skylights.splice(index,1); } //show custom selected poles if (skylights.length > 0){ MasterModify("A212","nameoption","Bays " + skylights.join(),3); MasterModify("A212","value",3); MasterModify("A212","hideoption",false,3); MasterModify("A212","hideoption",true,2); } else { MasterModify("A212","value",2); MasterModify("A212","hideoption",false,2); MasterModify("A212","hideoption",true,3); } MasterApply(); } } if (i == allImages.length - 1){ clearInterval(waitImages); //refocus dom elements sdApi.updateSettingsAsync({scene:{camera:{fov:5}}}); setTimeout(function(){ sdApi.updateSettingsAsync({scene:{camera:{fov:45}}}); },50); } } },250); }); } //apply changes to skylights in 3D model if (MasterValue("A212") == 0 || MasterValue("A212") == 1) { sdApi.parameters.updateAsync({name:"skylights", value:JSON.stringify(skylights)}); } break; case "A213": if (MasterValue("A213","text")[0] == "Apply"){ MasterModify("A213","text","Loading..."); sdApi.parameters.updateAsync({name:"skylights", value:JSON.stringify(skylights)}).then(function() { if (skylights.length == 0){ MasterModify("A212","value",0); MasterModify("A212","hideoption",false,2); MasterModify("A212","hideoption",true,3); MasterModify("A213","showthis",false); }else{ MasterModify("A213","name","Edit Custom Skylights"); MasterModify("A213","text","Edit"); } MasterApply(); //Clean anchor Content anchorsContent = []; //Hide Anchor Asset sdApi.scene.updateAsync({ id:"anchors", content:[] }); }); } else if (MasterValue("A213","text")[0] == "Edit"){ MasterFunction("A212"); MasterModify("A213","name","Apply Changes to Skylights"); MasterModify("A213","text","Apply"); } break; case "A89": updateBeforeDownload.push({name:"roof_claddingName", value: claddingName[MasterValue("A89")] + " Roofing"}); var claddingTexture = claddingTextureMap[MasterValue("A89")]; var claddingNormal = claddingNormalMap[MasterValue("A89")]; roofMaterials.content[0].data.bitmaptexture = claddingTexture; roofMaterials.content[0].data.normaltexture = claddingNormal; roofMaterials.content[1].data.bitmaptexture = claddingTexture; roofMaterials.content[1].data.normaltexture = claddingNormal; sdApi.scene.updateAsync(roofMaterials,'CommPlugin_1'); break; case "A90": updateBeforeDownload.push({name:"wall_claddingName", value: claddingName[MasterValue("A90")] + " Cladding"}); var claddingTexture = claddingTextureMap[MasterValue("A90")]; var claddingNormal = claddingNormalMap[MasterValue("A90")]; wallMaterials.content[0].data.bitmaptexture = claddingTexture; wallMaterials.content[0].data.normaltexture = claddingNormal; wallMaterials.content[1].data.bitmaptexture = claddingTexture; wallMaterials.content[1].data.normaltexture = claddingNormal; sdApi.scene.updateAsync(wallMaterials,'CommPlugin_1'); break; case "A91_IN": /* MasterModify("A190,A192,A194","showthis",false); if (doorsWindows["doorsWindows"].length > 0){ MasterModify("A194","showthis",true); for (var i =0; i < doorsWindows["doorsWindows"].length; i++){ if (doorsWindows["doorsWindows"][i]["style"] == "roller" || doorsWindows["doorsWindows"][i]["style"] == "sectional") { MasterModify("A192","showthis",true); } if (doorsWindows["doorsWindows"][i]["style"] == "steelPA" || doorsWindows["doorsWindows"][i]["style"] == "zincPA" || doorsWindows["doorsWindows"][i]["style"] == "alumPA") { MasterModify("A190","showthis",true); } } } */ break; case "A198": if (MasterValue("A198")){ MasterModify("A201","showthis",true); MasterFunction("A201"); MasterModify("A98,A103,A92,A94,A96,A100,A190,A192","showthis",false); }else{ MasterModify("A201","showthis",false); MasterModify("A98,A103,A92,A94,A96,A100,A190,A192","showthis",true); } break; case "A201": MasterModify("A99,A104,A93,A95,A97,A101,A195,A191,A193","value",MasterValue("A201")); wallMaterials.content[0].data.color = MasterValue("A201"); wallMaterials.content[1].data.color = MasterValue("A201"); wallMaterials.content[2].data.color = MasterValue("A201"); roofMaterials.content[0].data.color = MasterValue("A201"); roofMaterials.content[1].data.color = MasterValue("A201"); roofMaterials.content[2].data.color = MasterValue("A201"); roofMaterials.content[3].data.color = MasterValue("A201"); roofMaterials.content[4].data.color = MasterValue("A201"); paDrMaterial.content[0].data.color = MasterValue("A201"); //paDrMaterial.content[1].data.color = MasterValue("A201"); //paDrMaterial.content[2].data.color = MasterValue("A201"); rollerSectDrMaterial.content[0].data.color = MasterValue("A201"); rollerSectDrMaterial.content[1].data.color = MasterValue("A201"); rollerSectDrMaterial.content[2].data.color = MasterValue("A201"); WDMaterial.content[0].data.color = MasterValue("A201"); slidingMaterial.content[0].data.color = MasterValue("A201"); sdApi.scene.updateAsync([wallMaterials,roofMaterials,paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1'); break; case "A99": updateBeforeDownload.push({name: "Doors Flashing Color", value:MasterValue("A99")}); updateBeforeDownload.push({name: "Walls Color", value:MasterValue("A99")}); wallMaterials.content[0].data.color = MasterValue("A99"); wallMaterials.content[1].data.color = MasterValue("A99"); paDrMaterial.content[1].data.color = MasterValue("A99"); rollerSectDrMaterial.content[2].data.color = MasterValue("A99"); WDMaterial.content[0].data.color = MasterValue("A99"); slidingMaterial.content[0].data.color = MasterValue("A99"); sdApi.scene.updateAsync([wallMaterials,paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1'); break; case "A104": updateBeforeDownload.push({name: "Corner Color", value:MasterValue("A104")}); wallMaterials.content[2].data.color = MasterValue("A104"); sdApi.scene.updateAsync(wallMaterials,'CommPlugin_1'); break; case "A93": updateBeforeDownload.push({name: "Roof Color", value:MasterValue("A93")}); roofMaterials.content[0].data.color = MasterValue("A93"); roofMaterials.content[1].data.color = MasterValue("A93"); sdApi.scene.updateAsync(roofMaterials,'CommPlugin_1'); break; case "A95": updateBeforeDownload.push({name: "Barge Color", value:MasterValue("A95")}); roofMaterials.content[2].data.color = MasterValue("A95"); sdApi.scene.updateAsync(roofMaterials,'CommPlugin_1'); break; case "A97": updateBeforeDownload.push({name: "Ridge Color", value:MasterValue("A97")}); roofMaterials.content[3].data.color = MasterValue("A97"); sdApi.scene.updateAsync(roofMaterials,'CommPlugin_1'); break; case "A101": updateBeforeDownload.push({name: "Gutter Color", value:MasterValue("A101")}); roofMaterials.content[4].data.color = MasterValue("A101"); sdApi.scene.updateAsync(roofMaterials,'CommPlugin_1'); break; case "A195": /* updateBeforeDownload.push({name: "Doors Flashing Color", value:MasterValue("A195")}); paDrMaterial.content[2].data.color = MasterValue("A195"); rollerSectDrMaterial.content[2].data.color = MasterValue("A195"); WDMaterial.content[0].data.color = MasterValue("A195"); slidingMaterial.content[0].data.color = MasterValue("A195"); sdApi.scene.updateAsync([paDrMaterial,rollerSectDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1'); */ break; case "A191": updateBeforeDownload.push({name: "PA Doors Color", value:MasterValue("A191")}); paDrMaterial.content[0].data.color = MasterValue("A191"); sdApi.scene.updateAsync(paDrMaterial,'CommPlugin_1'); break; case "A193": updateBeforeDownload.push({name: "Roller/Sectional Doors Color", value:MasterValue("A193")}); rollerSectDrMaterial.content[0].data.color = MasterValue("A193"); rollerSectDrMaterial.content[1].data.color = MasterValue("A193"); sdApi.scene.updateAsync(rollerSectDrMaterial,'CommPlugin_1'); break; case "A236": if (MasterValue("A236")) { sdApi.scene.toggleGeometry([dimensionsScenePath], []); } else { sdApi.scene.toggleGeometry([], [dimensionsScenePath]); } break; case "A237": if (MasterValue("A237")) { sdApi.scene.toggleGeometry([roofScenePath,roofStructScenePath,wallScenePath + ".content_0"], []); } else { sdApi.scene.toggleGeometry([], [roofScenePath,roofStructScenePath,wallScenePath + ".content_0"]); } MasterFunction("A240"); break; case "A240": if (MasterValue("A240")) { if (MasterValue("A237")){sdApi.scene.toggleGeometry([roofScenePath],[])} else{sdApi.scene.toggleGeometry([],[roofScenePath])} sdApi.scene.toggleGeometry([wallScenePath], []); } else { sdApi.scene.toggleGeometry([], [roofScenePath,wallScenePath]); } break; case "A238": sdApi.parameters.updateAsync({name:"Detailed View",value:MasterValue("A238")}); if (MasterValue("A238")) { sdApi.scene.toggleGeometry([environmentScenePath], []); //setting scene settings sdApi.updateSettingsAsync( { scene: { gridVisibility: false, material: { environmentMapAsBackground: true }, render: { ambientOcclusion: true, shadows: true } } } ) //setting scene lighting sdApi.scene.lights.updateLight({ id: "ambient0", type: "ambient", properties: { color: 16777215, intensity: 0.5 } }); sdApi.scene.lights.updateLight({ id: "directional0", type: "directional", properties: { castShadow: true, color: 16777215, direction: { x: 0.5774, y: -0.5774, z: 0.5774 }, intensity: 0.75 } }); sdApi.scene.lights.updateLight({ id: "directional1", type: "directional", properties: { castShadow: false, color: 16777215, direction: { x: -0.25, y: -1, z: 1 }, intensity: 0.35 } }); } else { sdApi.scene.toggleGeometry([], [environmentScenePath]); //setting scene settings sdApi.updateSettingsAsync( { scene: { gridVisibility: true, material: { environmentMapAsBackground: false }, render: { ambientOcclusion: false, shadows: false } } } ); //setting lighting sdApi.scene.lights.updateLight({ id: "ambient0", type: "ambient", properties: { color: 16777215, intensity: 1.2 } }); sdApi.scene.lights.updateLight({ id: "directional0", type: "directional", properties: { castShadow: true, color: 16777215, direction: { x: 0.5774, y: -0.5774, z: 0.5774 }, intensity: 0 } }); sdApi.scene.lights.updateLight({ id: "directional1", type: "directional", properties: { castShadow: false, color: 16777215, direction: { x: -0.25, y: -1, z: 1 }, intensity: 0 } }); } break; case "A239": sdApi.parameters.updateAsync({name:"Open Door", value:MasterValue("A239")}); break; case "A242": var downloadDrawing = function(){ sdApi.exports.requestAsync({name: drawingNames[downloadCount], silent: true}).then(function(res){ drawingURL = res.data.content[0].href; MasterModify("A242","text",res.data.filename); MasterApply(); downloadCount++; }); }; if (MasterValue("A242","text")[0] == "Process"){ MasterModify("A242","text","Processing..."); downloadCount = 0; //Process 2D Drawings sdApi.parameters.updateAsync(updateBeforeDownload.concat({name: "Compute Drawings", value: true })).then(function () { updateBeforeDownload = []; downloadDrawing (); }); } else if (MasterValue("A242","text")[0] != "Processing..."){ window.open(drawingURL, '_blank'); if (downloadCount < drawingNames.length){ MasterModify("A242","text","Processing..."); downloadDrawing(); } else { sdApi.parameters.updateAsync({ name: "Compute Drawings", value: false }); MasterModify("A242","text","Process"); } } break; case "backward": if (cameraPositioned) { var showRoofAssets = [roofScenePath, roofStructScenePath, wallScenePath + ".content_0",environmentScenePath]; var hideRoofAssets = [roofScenePath, roofStructScenePath, wallScenePath + ".content_0",environmentScenePath]; if (hideRoof) { showRoofAssets = []; } else { hideRoofAssets = []; } //hiding or showing roof and roof structure to show interior structure sdApi.scene.toggleGeometry(showRoofAssets, hideRoofAssets); sdApi.scene.pause(); setTimeout(function () { var currentCamera = sdApi.scene.camera.get().data; sdApi.scene.camera.updateAsync( { position: { x: (MasterValue("A10") * MasterValue("A11")) / 2, y: ((backWingDepth - frontWingDepth) / 2) - 0.01, z: 100 }, target: { x: (MasterValue("A10") * MasterValue("A11")) / 2, y: (backWingDepth - frontWingDepth) / 2, z: 0 } }, { duration: 0 } ).then(function () { sdApi.scene.camera.zoomAsync([wallScenePath, dimensionsScenePath], { duration: 0 }).then(function () { var zoomCamera = sdApi.scene.camera.get().data; sdApi.scene.camera.updateAsync(currentCamera, { duration: 0 }).then(function () { sdApi.scene.resume(); setTimeout(function () { sdApi.scene.camera.updateAsync(zoomCamera, { duration: viewerSpeed }); }, 5); }); }); }); }, 5); } break; case "left": if (cameraPositioned ){ //showing roof and roof structure sdApi.scene.toggleGeometry( [roofScenePath,roofStructScenePath,wallScenePath + ".content_0"], [] ); sdApi.scene.camera.updateAsync( { position: { x:(MasterValue("A9") + frontWingDepth + backWingDepth) * -1, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; case "right": if (!orthographic && cameraPositioned){ sdApi.scene.camera.updateAsync( { position: { x:(MasterValue("A10") * MasterValue("A11")) + MasterValue("A9") + frontWingDepth + backWingDepth, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; case "up": if (!orthographic && cameraPositioned){ sdApi.scene.camera.updateAsync( { position: { x:(MasterValue("A10") * MasterValue("A11"))/2, y:(MasterValue("A10") * MasterValue("A11")) + MasterValue("A9") + backWingDepth, z:Number(MasterFunction("A32"))/2 }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:0, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; case "down": if (!orthographic && cameraPositioned){ sdApi.scene.camera.updateAsync( { position: { x:(MasterValue("A10")*MasterValue("A11"))/2, y:((MasterValue("A10")*MasterValue("A11")) + MasterValue("A9") + frontWingDepth) * -1, z:Number(MasterFunction("A32"))/2 }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:0, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; case "backward_left_up": if (!orthographic && cameraPositioned){ sdApi.scene.camera.updateAsync( { position: { x:MasterValue("A9") * -1, y:MasterValue("A9") + backWingDepth + 10, z:Number(MasterFunction("A32")) }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; case "backward_right_down": if (!orthographic){ sdApi.scene.camera.updateAsync( { position: { x:(MasterValue("A10") * MasterValue("A11")) + MasterValue("A9"), y:- MasterValue('A9') - frontWingDepth - 10, z:Number(MasterFunction("A32")) }, target:{ x:(MasterValue("A10")*MasterValue("A11"))/2, y:(backWingDepth - frontWingDepth)/2, z:Number(MasterFunction("A32"))/2 } }, { duration:viewerSpeed } ); } break; default:return false;} return true;}function MasterFunction(n, source, index){ if(index >= 0) { angular.element($("#GeneralJS")).scope().MasterFunctionItem(n, source, index); } var i=n.indexOf(",")>=0?n.split(","):[n];if(i.length == 1) { return MasterFunctionLoop(i[0], source) } else { for(var o in i)MasterFunctionLoop(i[o], source) }}function InitialFunction() {//download drawings just for admins MasterModify("A242", "showthis", "admin"); //get initial parameters centrePoles = JSON.parse(sdApi.parameters.get({name:"centrePoles"}).data[0].value); skylights = JSON.parse(sdApi.parameters.get({name:"skylights"}).data[0].value); divisionWallsJSON = JSON.parse(sdApi.parameters.get({name:"divisionWallsJSON"}).data[0].value); sideWallsJSON = JSON.parse(sdApi.parameters.get({name:"sideWallsJSON"}).data[0].value); drsWdsJSON = JSON.parse(sdApi.parameters.get({name:"drsWdsJSON"}).data[0].value); frontWings = JSON.parse(sdApi.parameters.get({name:"frontWings"}).data[0].value); backWings = JSON.parse(sdApi.parameters.get({name:"backWings"}).data[0].value); //hide visual options from summary MasterModify("A235,A241","showthis",null); for (var i = 0; i < assets.length; ++i) { var asset = assets[i]; if (asset.material == undefined) { if (asset.name == "Roof"){ roofMaterials = asset; delete roofMaterials.version; delete roofMaterials.scenePath; roofMaterials.id = "roofMaterial_id"; roofMaterials.name = "roofMaterial"; } if (asset.name == "Walls"){ wallMaterials = asset; delete wallMaterials.version; delete wallMaterials.scenePath; wallMaterials.id = "wallMaterial_id"; wallMaterials.name = "wallMaterial"; } if (asset.name == "Roller/SectionalDr"){ rollerSectDrMaterial= asset; delete rollerSectDrMaterial.version; delete rollerSectDrMaterial.scenePath; rollerSectDrMaterial.id = "rollerSectDrMaterial_id"; rollerSectDrMaterial.name = "rollerSectDrMaterial"; } if (asset.name == "PaDr"){ paDrMaterial= asset; delete paDrMaterial.version; delete paDrMaterial.scenePath; paDrMaterial.id = "paDrMaterial_id"; paDrMaterial.name = "paDrMaterial"; } if (asset.name == "WD"){ WDMaterial= asset; delete WDMaterial.version; delete WDMaterial.scenePath; WDMaterial.id = "WDMaterial_id"; WDMaterial.name = "WDMaterial"; } if (asset.name == "Sliding"){ slidingMaterial= asset; delete slidingMaterial.version; delete slidingMaterial.scenePath; slidingMaterial.id = "slidingMaterial_id"; slidingMaterial.name = "slidingMaterial"; } } else { if (asset.name == "Environment"){ environmentScenePath= asset.scenePath; } if (asset.name == "Sliding"){ slidingScenePath= asset.scenePath; } if (asset.name == "WD"){ WDScenePath= asset.scenePath; } if (asset.name == "PaDr"){ paDrScenePath= asset.scenePath; } if (asset.name == "Roller/SectionalDr"){ rollerSectDrScenePath= asset.scenePath; } if (asset.name == "Dimensions"){ dimensionsScenePath= asset.scenePath; } if (asset.name == "DrWdDimensions"){ drWdDimScenePath = asset.scenePath; } if (asset.name == "Roof"){ roofScenePath = asset.scenePath; } if (asset.name == "RoofStructure"){ roofStructScenePath = asset.scenePath; } if (asset.name == "Walls"){ wallScenePath = asset.scenePath; } } }}function FinalFunction() {sdApi.scene.updateAsync([roofMaterials,wallMaterials,rollerSectDrMaterial,paDrMaterial,WDMaterial,slidingMaterial],'CommPlugin_1').then(function() { sdApi.scene.updatePersistentAsync( [ { id: roofScenePath.split("_")[1].split(".")[1], material: roofMaterials.id }, { id: wallScenePath.split("_")[1].split(".")[1], material: wallMaterials.id }, { id: rollerSectDrScenePath.split("_")[1].split(".")[1], material: rollerSectDrMaterial.id }, { id: paDrScenePath.split("_")[1].split(".")[1], material: paDrMaterial.id }, { id: WDScenePath.split("_")[1].split(".")[1], material: WDMaterial.id }, { id: slidingScenePath.split("_")[1].split(".")[1], material: slidingMaterial.id } ],'CommPlugin_1').then(function() { //update live hide/show assets MasterFunction("A86,A87,A89,A90,A105,A236,A237,A238"); //update live materials wallMaterials.content[0].data.color = MasterValue("A99"); wallMaterials.content[1].data.color = MasterValue("A99"); wallMaterials.content[2].data.color = MasterValue("A104"); wallMaterials.content[0].data.normaltexture = claddingNormalMap[MasterValue("A90")]; wallMaterials.content[1].data.normaltexture = claddingNormalMap[MasterValue("A90")]; roofMaterials.content[0].data.color = MasterValue("A93"); roofMaterials.content[1].data.color = MasterValue("A93"); roofMaterials.content[2].data.color = MasterValue("A95"); roofMaterials.content[3].data.color = MasterValue("A97"); roofMaterials.content[4].data.color = MasterValue("A101"); roofMaterials.content[0].data.normaltexture = claddingNormalMap[MasterValue("A89")]; roofMaterials.content[1].data.normaltexture = claddingNormalMap[MasterValue("A89")]; paDrMaterial.content[0].data.color = MasterValue("A191"); paDrMaterial.content[1].data.color = MasterValue("A99"); rollerSectDrMaterial.content[0].data.color = MasterValue("A193"); rollerSectDrMaterial.content[1].data.color = MasterValue("A195"); rollerSectDrMaterial.content[2].data.color = MasterValue("A99"); WDMaterial.content[0].data.color = MasterValue("A99"); slidingMaterial.content[0].data.color = MasterValue("A99"); sdApi.scene.updateAsync([wallMaterials, roofMaterials, paDrMaterial, rollerSectDrMaterial, WDMaterial, slidingMaterial], 'CommPlugin_1'); }); }); //calling perspective view MasterFunction("A241,A8_OUT"); setTimeout(function(){ cameraPositioned = true; }, 1000);}